Skip to content

feat(case-study): Cursor Success Story (Jul 13, 2026 6:30 PM ET preview)#155

Open
oycyc wants to merge 1 commit into
masterfrom
feat/cursor-success-story-preview-20260713-1123et
Open

feat(case-study): Cursor Success Story (Jul 13, 2026 6:30 PM ET preview)#155
oycyc wants to merge 1 commit into
masterfrom
feat/cursor-success-story-preview-20260713-1123et

Conversation

@oycyc

@oycyc oycyc commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Preview of the Cursor × Masterpoint case study (immersive layout).

Live page: /case-studies/cursor/

What's here

  • Hero + stat strip — headline % / x figures (80% faster plans, 2.6x more infra PRs, 91% smaller blast radius, 6x more root-module workspaces) over the before → after numbers.
  • The Problem — the terralith story with Travis McPeak pull quotes.
  • The Engagement — dated phase cards (cursor-phase) with combined before/after ledgers.
  • The Results — gradient-pill comparison tables + charts.
  • What Changed for the Team — Ravi Rahman quote, blast-radius chart, and a closing testimonial with client photo.

Notable implementation

  • New shortcodes: cursor-phase, csi-figure, csi-phases, csi-phase, csi-scale.
  • csi-compare gains an inline gradient delta pill and a neutral row option.
  • docs/case-studies.md updated for the new shortcodes and conventions.

This branch is a timestamped preview snapshot for review. Iteration continues locally.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added a comprehensive Cursor case study with project phases, metrics, outcomes, and stakeholder feedback.
    • Added interactive chart carousels with navigation controls and responsive layouts.
    • Added phase cards for presenting engagement timelines and milestones.
    • Enhanced comparison sections with optional delta indicators and neutral styling.
  • Improvements

    • Refined case-study hero, pullquote, typography, imagery, and immersive layouts.
    • Improved print and PDF formatting, including stacked carousel slides and protected content blocks.
  • Documentation

    • Expanded authoring guidance for carousels, comparison metrics, styling, and print behavior.

@oycyc oycyc requested a review from a team as a code owner July 13, 2026 15:25
@netlify

netlify Bot commented Jul 13, 2026

Copy link
Copy Markdown

Deploy Preview for masterpoint ready!

Name Link
🔨 Latest commit 9c057d5
🔍 Latest deploy log https://app.netlify.com/projects/masterpoint/deploys/6a55671bb7233e0008f62ade
😎 Deploy Preview https://deploy-preview-155--masterpoint.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
Lighthouse
Lighthouse
1 paths audited
Performance: 36
Accessibility: 86
Best Practices: 92
SEO: 79
PWA: 70
View the detailed breakdown and full score reports

To edit notification comments on pull requests, go to your Netlify project configuration.

@coderabbitai

coderabbitai Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Walkthrough

Adds immersive case-study styling, interactive chart carousels, phase cards, enhanced comparison metrics, print behavior, authoring documentation, and a complete Cursor infrastructure case study.

Changes

Case study experience

Layer / File(s) Summary
Hero configuration and comparison metrics
assets/css/case-studies.scss, layouts/shortcodes/csi-compare.html, docs/case-studies.md
W widens the framed hero, adds optional comparison deltas and neutral after-values, and documents the new fields.
Immersive prose and pullquote styling
assets/css/case-studies.scss
Adjusts pullquote attribution styling, constrains left-aligned prose, and adds consistent heading and image presentation across light and dark cards.
Chart carousel implementation and print behavior
layouts/shortcodes/csi-carousel.html, assets/css/case-studies.scss, docs/case-studies.md
Adds parsed slide markup, scroll-snap navigation, arrows, dots, focus states, and print-time stacked slides without interactive controls.
Phase cards and engagement structure
layouts/shortcodes/csi-phase.html, assets/css/case-studies.scss
Adds the csi-phase shortcode and styles its rail, markers, cards, and nested comparison ledgers.
Cursor case-study narrative
content/case-studies/cursor.md
Adds page metadata, hero statistics, carousel content, problem and engagement sections, quantitative results, team outcomes, and testimonials.

Estimated code review effort: 4 (Complex) | ~45 minutes

Possibly related PRs

Suggested reviewers: gowiem, westonplatter

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly names the main change: the Cursor case-study success story preview.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/cursor-success-story-preview-20260713-1123et

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🧹 Nitpick comments (3)
assets/css/case-studies.scss (2)

2371-2417: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

__after--plain overriding __after relies on source order, not specificity.

.csi-compare__after--plain and .csi-compare__after are separate top-level selectors of equal specificity (both single classes via &__ concatenation); --plain only wins today because it's declared after __after in the stylesheet. A future reorder (or a new override rule inserted between them) would silently break the "neutral" plain-color rendering with no compile-time signal.

♻️ Suggested fix: compound selector instead of relying on cascade order
-    &__after--plain {
+    &__after.csi-compare__after--plain {
       color: $csi-ink;
       background: none;
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@assets/css/case-studies.scss` around lines 2371 - 2417, Update the neutral
modifier styling around __after--plain to use a compound selector with __after,
increasing specificity so plain neutral rendering does not depend on declaration
order. Preserve the existing color, background, clipping, and text-fill
overrides.

83-87: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Stylelint blank-line-before violations throughout this file.

Static analysis flags repeated scss/double-slash-comment-empty-line-before / declaration-empty-line-before violations across this diff (lines 83, 111, 132, 143, 1243, 1274, 1851, 1865, 1873, 1925, 1936, 1941, 1946, 2371, 2382, 2397, 2413, 2465, 2760, 2806, 2825, 2834, 2880, 2905). These are Trunk/stylelint-enforced formatting rules for .scss files.

As per coding guidelines, **/*.{md,yaml,yml,json,scss,js,html,toml} files should "Use Trunk for linting and formatting, including markdownlint, yamllint, prettier, checkov, gitleaks, oxipng, and svgo where applicable." Running trunk fmt/trunk check on this file should auto-fix these.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@assets/css/case-studies.scss` around lines 83 - 87, Run Trunk formatting and
linting on the SCSS file, targeting the reported
scss/double-slash-comment-empty-line-before and declaration-empty-line-before
violations throughout the diff. Apply the formatter’s blank-line adjustments
while preserving the existing styles and declarations, then verify the file
passes trunk check.

Sources: Coding guidelines, Linters/SAST tools

layouts/shortcodes/csi-phase.html (1)

10-20: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Indent inner elements under <article> for readability.

The child <div>s and shortcode logic have no indentation, unlike the consistently indented csi-phase.html. Aligning indentation would improve maintainability.

♻️ Proposed indentation fix
 <article class="cursor-phase" data-aos="fade-up" data-aos-duration="600">
-<div class="cursor-phase__rail" aria-hidden="true">
-<span class="cursor-phase__marker"></span>
-</div>
-<div class="cursor-phase__card">
-{{- with $title }}<h3 class="cursor-phase__title">{{ . | safeHTML }}</h3>{{ end -}}
-<div class="cursor-phase__body csi-prose">
-{{ .Inner | $.Page.RenderString (dict "display" "block") }}
-</div>
-</div>
+  <div class="cursor-phase__rail" aria-hidden="true">
+    <span class="cursor-phase__marker"></span>
+  </div>
+  <div class="cursor-phase__card">
+    {{- with $title }}<h3 class="cursor-phase__title">{{ . | safeHTML }}</h3>{{ end -}}
+    <div class="cursor-phase__body csi-prose">
+      {{ .Inner | $.Page.RenderString (dict "display" "block") }}
+    </div>
+  </div>
 </article>
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@layouts/shortcodes/csi-phase.html` around lines 10 - 20, Reformat the
csi-phase shortcode markup so the child elements and their template logic are
consistently indented beneath the containing article structure, without changing
the rendered HTML or shortcode behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@content/case-studies/cursor.md`:
- Line 84: Correct the three compound modifiers in the document: change “10
minute outage” to “10-minute outage,” “mid 2026” to “mid-2026,” and
“product/domain scoped” to “product/domain-scoped.”
- Line 28: Update the body prose module-count references at the affected
locations to use “141+” instead of “100+”, keeping the wording and all other
document content unchanged so the metric matches the front matter and image alt
text.

In `@docs/case-studies.md`:
- Around line 242-245: Update the shortcode reference table in case-studies.md:
add the supported neutral: flag to the csi-compare attributes, and add a
dedicated cursor-phase row documenting its purpose, placement, and attributes
based on its usage in cursor.md. Keep the existing csi-phases/csi-phase
documentation unchanged.

In `@layouts/shortcodes/cursor-phase.html`:
- Line 15: Update the phase title rendering in the title block to remove the
safeHTML filter and output title as normal escaped text. Keep the existing
conditional rendering and cursor-phase__title markup unchanged.

---

Nitpick comments:
In `@assets/css/case-studies.scss`:
- Around line 2371-2417: Update the neutral modifier styling around
__after--plain to use a compound selector with __after, increasing specificity
so plain neutral rendering does not depend on declaration order. Preserve the
existing color, background, clipping, and text-fill overrides.
- Around line 83-87: Run Trunk formatting and linting on the SCSS file,
targeting the reported scss/double-slash-comment-empty-line-before and
declaration-empty-line-before violations throughout the diff. Apply the
formatter’s blank-line adjustments while preserving the existing styles and
declarations, then verify the file passes trunk check.

In `@layouts/shortcodes/csi-phase.html`:
- Around line 10-20: Reformat the csi-phase shortcode markup so the child
elements and their template logic are consistently indented beneath the
containing article structure, without changing the rendered HTML or shortcode
behavior.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: a94689a5-1f85-4e72-a66c-010551fad0fe

📥 Commits

Reviewing files that changed from the base of the PR and between 9498919 and e83fe86.

⛔ Files ignored due to path filters (5)
  • static/img/case-studies/cursor/cursor-lockup-white.svg is excluded by !**/*.svg
  • static/img/case-studies/cursor/dependency-graph.png is excluded by !**/*.png
  • static/img/case-studies/cursor/deployment-frequency-stat.png is excluded by !**/*.png
  • static/img/case-studies/cursor/plan-time-column-compare.png is excluded by !**/*.png
  • static/img/case-studies/cursor/tf-workspaces.png is excluded by !**/*.png
📒 Files selected for processing (12)
  • assets/css/case-studies.scss
  • content/case-studies/cursor.md
  • docs/case-studies.md
  • layouts/case-studies/immersive.html
  • layouts/case-studies/single.html
  • layouts/shortcodes/csi-compare.html
  • layouts/shortcodes/csi-figure.html
  • layouts/shortcodes/csi-phase.html
  • layouts/shortcodes/csi-phases.html
  • layouts/shortcodes/csi-scale.html
  • layouts/shortcodes/cursor-phase.html
  • static/img/case-studies/cursor/cursor-team-photo.webp

Comment thread content/case-studies/cursor.md Outdated
- value: "91%"
label: "reduction in blast radius<br>54 &rarr; 5 average cloud resources modified per deployment"
- value: "6x"
label: "more Terraform root module workspaces<br>21 &rarr; 141+"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Inconsistent module-count figure: "100+" contradicts the "141+" stated elsewhere.

Front matter (21 &rarr; 141+) and the image alt text ("21 in October 2025 to 141 in May 2026 — up 571%") agree, but the body prose says the count went from "21 to 100+" — a different number for the same metric in the same document.

📝 Suggested fix
-The number of separately managed modules went from **21 to 100+**. Engineers are now creating their own product/domain scoped infrastructure instead of jumbling it in the primary monolithic workspace.
+The number of separately managed modules went from **21 to 141+**. Engineers are now creating their own product/domain-scoped infrastructure instead of jumbling it in the primary monolithic workspace.

Also applies to: 241-241, 243-243

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/case-studies/cursor.md` at line 28, Update the body prose
module-count references at the affected locations to use “141+” instead of
“100+”, keeping the wording and all other document content unchanged so the
metric matches the front matter and image alt text.

Comment thread content/case-studies/cursor.md Outdated
We would have engineers click apply on prod workspaces that had 120 AWS ECS service changes. The ECS services would change all the time because of drift, so the team became desensitized to large Terraform plan changes.
{{< /cs-pullquote >}}

This confusion caused downtime, such as a network firewall change that caused a 10 minute outage.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Minor hyphenation: compound modifiers before a noun.

LanguageTool flags three missing hyphens: "10 minute outage" → "10-minute outage" (line 84), "mid 2026" → "mid-2026" (line 213), "product/domain scoped" → "product/domain-scoped" (line 241).

Also applies to: 213-213, 241-241

🧰 Tools
🪛 LanguageTool

[grammar] ~84-~84: Use a hyphen to join words.
Context: ...network firewall change that caused a 10 minute outage. The existing platform, T...

(QB_NEW_EN_HYPHEN)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/case-studies/cursor.md` at line 84, Correct the three compound
modifiers in the document: change “10 minute outage” to “10-minute outage,” “mid
2026” to “mid-2026,” and “product/domain scoped” to “product/domain-scoped.”

Source: Linters/SAST tools

Comment thread docs/case-studies.md Outdated
Comment on lines +242 to +245
| `csi-compare` | "Then / now" migration ledger: muted old world → bold gradient new world per metric. Owns a page's hard numbers — pair with a slimmed `csi-impact` so figures aren't stated twice. Mobile stacks each row with per-cell tags. INSIDE a `csi-section` (also nests inside a `csi-phase`). | `before_label`, `after_label`; inner blocks split by `---`, each `label:` / `before:` / `after:` / optional `delta:` (renders as a solid-gradient pill **inline** after the new-world value — the "Change" figure) |
| `csi-phases` / `csi-phase` | Vertical engagement-journey rail (one continuous gradient line + a gradient dot per phase). Each `csi-phase` is a dated chapter whose head + body are wrapped in a **white card** off the rail (`.csi-phase__card`) so each area — November 2025, December 2025, … — reads as its own card. Full block markdown + nested `csi-compare` ledgers work inside. INSIDE a `csi-section`. | `csi-phase`: `date` (chip above the title), `title` (HTML ok). Put one `csi-phase` per phase inside a single `csi-phases`. |
| `csi-figure` | Full-width wrapper for a CSS-drawn figure partial from `figures/<name>.html` (subfolders work — `name="cursor/terralith"`). No image asset; recolours per face and stays crisp in print. INSIDE a `csi-section`. | `name` (partial path under `figures/`), `max` (max width, e.g. `760px`) |
| `csi-scale` | Type-specimen magnitude wall: each row leads with a huge gradient magnitude phrase ("hundreds", "thousands") + the rest at prose size. For enumerating what a platform manages when the magnitudes ARE the story. INSIDE a `csi-section`. | inner blocks split by `---`, each `big:` / `rest:` / optional `pre:` |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Doc table is missing neutral: and the whole cursor-phase shortcode.

Two gaps in the shortcode reference table:

  • The csi-compare row documents delta: but not the new neutral: flag (which the shortcode's own inline comment and case-studies.scss's __after--plain rule both implement).
  • There's no row at all for cursor-phase, the shortcode content/case-studies/cursor.md actually uses for every engagement-phase card (it's distinct from csi-phases/csi-phase, which is documented but unused by Cursor).

Based on learnings, per docs/case-studies.md's own charter: "Keep it current — every time a new decision is made about layout, shortcodes, visuals, or workflow, update this file before ending the session."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/case-studies.md` around lines 242 - 245, Update the shortcode reference
table in case-studies.md: add the supported neutral: flag to the csi-compare
attributes, and add a dedicated cursor-phase row documenting its purpose,
placement, and attributes based on its usage in cursor.md. Keep the existing
csi-phases/csi-phase documentation unchanged.

Source: Coding guidelines

Comment thread layouts/shortcodes/cursor-phase.html Outdated
<span class="cursor-phase__marker"></span>
</div>
<div class="cursor-phase__card">
{{- with $title }}<h3 class="cursor-phase__title">{{ . | safeHTML }}</h3>{{ end -}}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '== file map ==\n'
git ls-files 'layouts/shortcodes/cursor-phase.html' 'content/case-studies/cursor.md' 'content/**' | sed -n '1,120p'

printf '\n== shortcode file ==\n'
cat -n layouts/shortcodes/cursor-phase.html

printf '\n== call sites / references ==\n'
rg -n --context 2 'cursor-phase|title\s*=' content layouts -g '!**/node_modules/**' || true

printf '\n== surrounding shortcode docs or examples ==\n'
rg -n --context 2 'cursor-phase' . -g '!**/node_modules/**' || true

Repository: masterpointio/masterpoint.io

Length of output: 41479


Avoid safeHTML for phase titles. title is plain text here, so render it normally unless this shortcode is meant to accept trusted HTML.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@layouts/shortcodes/cursor-phase.html` at line 15, Update the phase title
rendering in the title block to remove the safeHTML filter and output title as
normal escaped text. Keep the existing conditional rendering and
cursor-phase__title markup unchanged.

@oycyc oycyc force-pushed the feat/cursor-success-story-preview-20260713-1123et branch from e83fe86 to 7814b04 Compare July 13, 2026 15:57
@oycyc oycyc changed the title feat(case-study): Cursor Success Story (Jul 13, 2026 11:23 AM ET preview) feat(case-study): Cursor Success Story (Jul 13, 2026 11:56 AM ET preview) Jul 13, 2026
@oycyc oycyc changed the title feat(case-study): Cursor Success Story (Jul 13, 2026 11:56 AM ET preview) feat(case-study): Cursor Success Story (Jul 13, 2026 3:38 PM ET preview) Jul 13, 2026
@oycyc oycyc force-pushed the feat/cursor-success-story-preview-20260713-1123et branch 2 times, most recently from 39edce3 to b8f5de6 Compare July 13, 2026 19:40
@oycyc oycyc changed the title feat(case-study): Cursor Success Story (Jul 13, 2026 3:38 PM ET preview) feat(case-study): Cursor Success Story (Jul 13, 2026 3:40 PM ET preview) Jul 13, 2026
@oycyc oycyc changed the title feat(case-study): Cursor Success Story (Jul 13, 2026 3:40 PM ET preview) feat(case-study): Cursor Success Story (Jul 13, 2026 3:42 PM ET preview) Jul 13, 2026
@oycyc oycyc force-pushed the feat/cursor-success-story-preview-20260713-1123et branch from b8f5de6 to 95b6e98 Compare July 13, 2026 19:42

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@assets/css/case-studies.scss`:
- Line 1189: Run Trunk formatting on assets/css/case-studies.scss, applying the
required blank lines before comments and declarations at the reported locations
without changing styling behavior.
- Around line 1896-1905: Include the csi-section--gradient selector alongside
the existing dark-face selectors in each affected override, including the
heading/link rule near csi-section--pine, the phase metadata rule, and the scale
copy rule. Ensure all three gradient variants receive the same light text and
background styling as the corresponding pine and pine-deep sections.
- Line 3509: Update the print pagination rules for the .csi-phase__head element
so its heading remains attached to the corresponding phase body, not merely
unsplit itself. Apply the existing avoid-break behavior to the containing phase
section or heading-plus-body wrapper, preserving the current styling for
non-print layouts.
- Around line 2330-2336: Update the print styling for .csi-compare__after so the
__after--plain variant retains its neutral $csi-ink color, background, and text
fill instead of being overridden by the mint !important rule. Add a sufficiently
specific print override near the existing print rule while preserving mint
styling for non-plain comparisons.

In `@content/case-studies/cursor.md`:
- Around line 8-16: Update the hero image rendering in the case-study templates
to use the front matter hero_aside_alt value instead of hardcoding alt=""; apply
this consistently in both immersive.html and single.html, preserving an empty
alt only when no descriptive value is provided. Alternatively, remove
hero_aside_alt from the Cursor case study if the image is intentionally
decorative.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 1efc04b4-f815-4454-99ff-d7b9bbd43de8

📥 Commits

Reviewing files that changed from the base of the PR and between e83fe86 and 39edce3.

⛔ Files ignored due to path filters (5)
  • static/img/case-studies/cursor/cursor-lockup-white.svg is excluded by !**/*.svg
  • static/img/case-studies/cursor/dependency-graph.png is excluded by !**/*.png
  • static/img/case-studies/cursor/deployment-frequency-stat.png is excluded by !**/*.png
  • static/img/case-studies/cursor/plan-time-column-compare.png is excluded by !**/*.png
  • static/img/case-studies/cursor/tf-workspaces.png is excluded by !**/*.png
📒 Files selected for processing (10)
  • assets/css/case-studies.scss
  • content/case-studies/cursor.md
  • docs/case-studies.md
  • layouts/shortcodes/csi-compare.html
  • layouts/shortcodes/csi-figure.html
  • layouts/shortcodes/csi-phase.html
  • layouts/shortcodes/csi-phases.html
  • layouts/shortcodes/csi-scale.html
  • layouts/shortcodes/cursor-phase.html
  • static/img/case-studies/cursor/cursor-team-photo.webp
🚧 Files skipped from review as they are similar to previous changes (1)
  • layouts/shortcodes/csi-compare.html

color: $cs-mint;
padding-top: 0.35rem;
}
// default inline attribution (name beside role): drop the stacked-layout

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Run Trunk formatting before merge.

Stylelint reports 20 missing blank-line violations before comments or declarations. trunk fmt assets/css/case-studies.scss should resolve them.

As per coding guidelines, SCSS files must use Trunk for linting and formatting.

Also applies to: 1220-1220, 1797-1797, 1811-1811, 1819-1819, 1871-1871, 1882-1882, 1887-1887, 1892-1892, 2317-2317, 2328-2328, 2343-2343, 2359-2359, 2411-2411, 2706-2706, 2752-2752, 2771-2771, 2780-2780, 2826-2826, 2851-2851

🧰 Tools
🪛 Stylelint (17.14.0)

[error] 1189-1189: Expected empty line before comment (scss/double-slash-comment-empty-line-before)

(scss/double-slash-comment-empty-line-before)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@assets/css/case-studies.scss` at line 1189, Run Trunk formatting on
assets/css/case-studies.scss, applying the required blank lines before comments
and declarations at the reported locations without changing styling behavior.

Sources: Coding guidelines, Linters/SAST tools

Comment thread assets/css/case-studies.scss
Comment thread assets/css/case-studies.scss
Comment thread assets/css/case-studies.scss Outdated
Comment on lines +8 to +16
# Hero
eyebrow: "CASE STUDY SUCCESS STORY"
client: "Cursor"
client_logo: /img/case-studies/cursor/cursor-lockup-white.svg
client_logo_height: 30px
hero_title: "<span class='text-gradient'>80% Faster Plans, 2x More Deployments</span>: How Cursor Rebuilt Its Terraform Workflow with Masterpoint"
hero_aside_image: /img/case-studies/cursor/cursor-team-photo.webp
hero_aside_alt: "A Cursor engineer leads a team discussion at a chalkboard sketched with background-agent architecture"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Description: Check whether hero_aside_alt is referenced anywhere in the layouts.
rg -n 'hero_aside_alt' --type=html

Repository: masterpointio/masterpoint.io

Length of output: 166


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Locate all references to the hero fields and the immersive layout.
rg -n 'hero_aside_(image|alt)|immersive\.html|bgImg|alt=""|hero_aside' .

Repository: masterpointio/masterpoint.io

Length of output: 2803


hero_aside_alt is ignored by the hero template

layouts/case-studies/immersive.html and layouts/case-studies/single.html both render the hero image with alt="", so this new hero_aside_alt value never reaches the output. If the image is meant to be decorative, remove the field; otherwise wire it into the template for accessibility.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/case-studies/cursor.md` around lines 8 - 16, Update the hero image
rendering in the case-study templates to use the front matter hero_aside_alt
value instead of hardcoding alt=""; apply this consistently in both
immersive.html and single.html, preserving an empty alt only when no descriptive
value is provided. Alternatively, remove hero_aside_alt from the Cursor case
study if the image is intentionally decorative.

@oycyc oycyc changed the title feat(case-study): Cursor Success Story (Jul 13, 2026 3:42 PM ET preview) feat(case-study): Cursor Success Story (Jul 13, 2026 3:59 PM ET preview) Jul 13, 2026
@oycyc oycyc force-pushed the feat/cursor-success-story-preview-20260713-1123et branch 2 times, most recently from 5a6b5f2 to d3bb046 Compare July 13, 2026 20:20
@oycyc oycyc changed the title feat(case-study): Cursor Success Story (Jul 13, 2026 3:59 PM ET preview) feat(case-study): Cursor Success Story (Jul 13, 2026 4:20 PM ET preview) Jul 13, 2026
@oycyc oycyc changed the title feat(case-study): Cursor Success Story (Jul 13, 2026 4:20 PM ET preview) feat(case-study): Cursor Success Story (Jul 13, 2026 4:37 PM ET preview) Jul 13, 2026
@oycyc oycyc force-pushed the feat/cursor-success-story-preview-20260713-1123et branch from d3bb046 to d738451 Compare July 13, 2026 20:37
@oycyc oycyc changed the title feat(case-study): Cursor Success Story (Jul 13, 2026 4:37 PM ET preview) feat(case-study): Cursor Success Story (Jul 13, 2026 6:21 PM ET preview) Jul 13, 2026
@oycyc oycyc force-pushed the feat/cursor-success-story-preview-20260713-1123et branch from d738451 to eebf9d0 Compare July 13, 2026 22:21

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
layouts/shortcodes/csi-carousel.html (1)

70-71: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Consider Page.Store instead of Page.Scratch.

Page.Scratch has been soft-deprecated since Hugo v0.138.0 in favor of Page.Store (currently just aliased, but flagged for eventual removal).

♻️ Proposed rename
-{{- if not (.Page.Scratch.Get "csiCarouselJS") -}}
-  {{- .Page.Scratch.Set "csiCarouselJS" true -}}
+{{- if not (.Page.Store.Get "csiCarouselJS") -}}
+  {{- .Page.Store.Set "csiCarouselJS" true -}}

Please confirm this matches the Hugo version pinned for this project before applying (soft deprecation, no forced timeline).

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@layouts/shortcodes/csi-carousel.html` around lines 70 - 71, Confirm the
project’s pinned Hugo version supports Page.Store, then update the csiCarouselJS
state check and assignment in the carousel template from Page.Scratch to
Page.Store, preserving the existing key and boolean behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@content/case-studies/cursor.md`:
- Line 2: Update the case study headline and its corresponding hero_title from
“2x More Deployments” to “2.6x More Deployments” so they match the stat_bar,
results table, and narrative metrics.

In `@layouts/shortcodes/csi-carousel.html`:
- Line 84: Refresh the carousel’s `base` value whenever the resize handler runs,
before invoking `sync()`, so it reflects the updated `slides[0].offsetLeft`
after breakpoint-driven padding changes. Apply the same update to the related
`base` references used by `current()` and `goTo()` while preserving their
existing behavior.

---

Nitpick comments:
In `@layouts/shortcodes/csi-carousel.html`:
- Around line 70-71: Confirm the project’s pinned Hugo version supports
Page.Store, then update the csiCarouselJS state check and assignment in the
carousel template from Page.Scratch to Page.Store, preserving the existing key
and boolean behavior.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 438f4309-f8ba-4147-afaf-aa5cdb8dc1fa

📥 Commits

Reviewing files that changed from the base of the PR and between 39edce3 and eebf9d0.

⛔ Files ignored due to path filters (6)
  • static/img/case-studies/cursor/cursor-lockup-white.svg is excluded by !**/*.svg
  • static/img/case-studies/cursor/cursor-masterpoint.png is excluded by !**/*.png
  • static/img/case-studies/cursor/dependency-graph.png is excluded by !**/*.png
  • static/img/case-studies/cursor/deployment-frequency-stat.png is excluded by !**/*.png
  • static/img/case-studies/cursor/plan-time-column-compare.png is excluded by !**/*.png
  • static/img/case-studies/cursor/tf-workspaces.png is excluded by !**/*.png
📒 Files selected for processing (7)
  • assets/css/case-studies.scss
  • content/case-studies/cursor.md
  • docs/case-studies.md
  • layouts/shortcodes/csi-carousel.html
  • layouts/shortcodes/csi-compare.html
  • layouts/shortcodes/csi-phase.html
  • static/img/case-studies/cursor/cursor-team-photo.webp
🚧 Files skipped from review as they are similar to previous changes (1)
  • layouts/shortcodes/csi-compare.html

@@ -0,0 +1,273 @@
---
title: "80% Faster Plans, 2x More Deployments: How Cursor Rebuilt Its Terraform Workflow with Masterpoint"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Headline "2x More Deployments" is inconsistent with the "2.6x" figure used everywhere else in the doc.

The stat_bar (line 22: "2.6x"), the results comparison table (line 200: "+157%"), and the narrative ("2.6x more PRs shipped") all agree the PR-volume increase is ~2.6x (194→500+ ≈ 157% increase). The title and hero_title both round this down to "2x", understating the actual metric and creating an inconsistency between the headline claim and the supporting data used throughout the rest of the page.

✏️ Suggested fix
-title: "80% Faster Plans, 2x More Deployments: How Cursor Rebuilt Its Terraform Workflow with Masterpoint"
+title: "80% Faster Plans, 2.6x More Deployments: How Cursor Rebuilt Its Terraform Workflow with Masterpoint"
-hero_title: "<span class='text-gradient'>80% Faster Plans, 2x More Deployments</span>: How Cursor Rebuilt Its Terraform Workflow with Masterpoint"
+hero_title: "<span class='text-gradient'>80% Faster Plans, 2.6x More Deployments</span>: How Cursor Rebuilt Its Terraform Workflow with Masterpoint"

Also applies to: 13-13

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/case-studies/cursor.md` at line 2, Update the case study headline and
its corresponding hero_title from “2x More Deployments” to “2.6x More
Deployments” so they match the stat_bar, results table, and narrative metrics.

var next = root.querySelector(".csi-carousel__arrow--next");
var dots = Array.prototype.slice.call(root.querySelectorAll(".csi-carousel__dot"));
if (!slides.length) return;
var base = slides[0].offsetLeft;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Stale base after a breakpoint-crossing resize.

base is captured once from slides[0].offsetLeft at setup, but the scroller's side padding changes (13% → 7%) at the 700px breakpoint, shifting every slide's offsetLeft. The resize handler calls sync() but never refreshes base, so current()/goTo() can misjudge the active slide or scroll to the wrong position after a viewport resize crosses that breakpoint.

🐛 Proposed fix: recompute `base` on resize
-          window.addEventListener("resize", sync);
+          window.addEventListener("resize", function () {
+            base = slides[0].offsetLeft;
+            sync();
+          });

Also applies to: 93-96, 122-122

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@layouts/shortcodes/csi-carousel.html` at line 84, Refresh the carousel’s
`base` value whenever the resize handler runs, before invoking `sync()`, so it
reflects the updated `slides[0].offsetLeft` after breakpoint-driven padding
changes. Apply the same update to the related `base` references used by
`current()` and `goTo()` while preserving their existing behavior.

Publish the Cursor + Masterpoint case study on the immersive layout
(preview snapshot).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@oycyc oycyc changed the title feat(case-study): Cursor Success Story (Jul 13, 2026 6:21 PM ET preview) feat(case-study): Cursor Success Story (Jul 13, 2026 6:30 PM ET preview) Jul 13, 2026
@oycyc oycyc force-pushed the feat/cursor-success-story-preview-20260713-1123et branch from eebf9d0 to 9c057d5 Compare July 13, 2026 22:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant