Reposition Caplets around whole-stack agent capabilities#248
Reposition Caplets around whole-stack agent capabilities#248ian-pascoe wants to merge 2 commits into
Conversation
📝 WalkthroughWalkthroughCaplets’ positioning is rewritten around a whole-stack capability layer. Documentation, catalog pages, landing sections, activation flows, navigation, metadata, accessibility semantics, and CTA observability are updated to reflect the new terminology and journey. ChangesWhole Stack positioning
Estimated code review effort: 3 (Moderate) | ~25 minutes Sequence Diagram(s)sequenceDiagram
participant Visitor
participant LandingPage
participant Activation
participant Observability
participant PostHog
Visitor->>LandingPage: Open whole-stack landing page
LandingPage->>Activation: Render setup options and activation CTA
Visitor->>Activation: Copy setup command or connect backend
Visitor->>Observability: Click categorized CTA
Observability->>PostHog: Capture caplets_site_intent with CTA category
Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
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. Comment |
|
| Filename | Overview |
|---|---|
| apps/landing/src/pages/index.astro | Reorders the landing journey and adds the breadth and issue-to-production sections without an identified functional issue. |
| apps/landing/src/components/landing/Activation.astro | Moves setup and copy controls into the activation section while preserving working tab and copy initialization. |
| apps/landing/src/scripts/observability.ts | Captures explicitly categorized internal CTAs; the emitted categorical values satisfy the shared event contract. |
| apps/catalog/src/pages/caplets/[entryKey].astro | Adds social metadata, but derives og:url from the request and can publish noncanonical preview or query-bearing URLs. |
| apps/landing/src/data/landing.ts | Updates capability, portability, benchmark, and activation content used throughout the redesigned landing page. |
Reviews (1): Last reviewed commit: "fix(marketing): align whole-stack public..." | Re-trigger Greptile
| <meta property="og:title" content={`${pageTitle} — Caplets Catalog`} /> | ||
| <meta property="og:description" content={pageDescription} /> | ||
| <meta property="og:type" content="website" /> | ||
| <meta property="og:url" content={Astro.url.href} /> |
There was a problem hiding this comment.
Using Astro.url.href publishes the incoming hostname and query string as og:url, so shares made through preview hosts or tracking URLs advertise a request-specific address instead of the stable production catalog entry. Build this value from the configured catalog site and entry path, consistent with the catalog index metadata.
Knowledge Base Used: Dashboard and Catalog Apps
Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (1)
apps/landing/test/activation-links.test.ts (1)
8-16: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winTest rendered behavior instead of component-source literals.
These checks couple to raw Astro markup and
data-*strings. Cover the rendered CTA destination/category and setup-tab behavior through the landing test surface instead.As per coding guidelines, “avoid tests that merely restate implementation literals or superficial metadata/copy/export details.”
Also applies to: 18-20
🤖 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 `@apps/landing/test/activation-links.test.ts` around lines 8 - 16, Replace the source-text assertions in the activation-links test with landing-surface behavior tests that render or exercise Hero.astro and verify the secondary shared-Caplets CTA resolves to the public catalog and exposes the secondary category. Also cover the setup-tab interaction and its resulting rendered behavior through the landing test surface, without reading component source or asserting raw implementation literals.Source: Coding guidelines
🤖 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 `@apps/docs/src/content/docs/index.mdx`:
- Line 15: Update the Code Mode description to say that each configured Caplet
becomes a typed caplets.<id> handle, replacing the inaccurate reference to each
configured backend while preserving the rest of the explanation.
In `@STRATEGY.md`:
- Around line 22-23: Update the “Caplet Activation” definition in STRATEGY.md to
require both the first successful Caplet backend operation and a subsequent
connection of a capability from the user’s own stack. Alternatively, split first
execution and activation into distinct events, ensuring retention and activation
cohorts use the milestone that includes the follow-up connection.
---
Nitpick comments:
In `@apps/landing/test/activation-links.test.ts`:
- Around line 8-16: Replace the source-text assertions in the activation-links
test with landing-surface behavior tests that render or exercise Hero.astro and
verify the secondary shared-Caplets CTA resolves to the public catalog and
exposes the secondary category. Also cover the setup-tab interaction and its
resulting rendered behavior through the landing test surface, without reading
component source or asserting raw implementation literals.
🪄 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: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 6718a552-0756-4e7d-bd5b-3784aeb08aca
📒 Files selected for processing (29)
CONTEXT.mdPRODUCT.mdREADME.mdSTRATEGY.mdapps/catalog/src/pages/caplets/[entryKey].astroapps/catalog/src/pages/index.astroapps/catalog/src/styles/catalog.cssapps/docs/src/content/docs/index.mdxapps/landing/src/components/landing/Activation.astroapps/landing/src/components/landing/AgentTrace.astroapps/landing/src/components/landing/BlogCta.astroapps/landing/src/components/landing/Breadth.astroapps/landing/src/components/landing/CommandBlock.astroapps/landing/src/components/landing/Footer.astroapps/landing/src/components/landing/Header.astroapps/landing/src/components/landing/Hero.astroapps/landing/src/components/landing/Proof.astroapps/landing/src/components/landing/RemoteStory.astroapps/landing/src/components/landing/WholeJob.astroapps/landing/src/components/landing/WhyCaplets.astroapps/landing/src/content/blog/why-giant-mcp-tool-walls-dont-scale.mdapps/landing/src/data/landing.tsapps/landing/src/layouts/LandingLayout.astroapps/landing/src/pages/blog/index.astroapps/landing/src/pages/index.astroapps/landing/src/scripts/observability.tsapps/landing/test/activation-links.test.tsapps/landing/test/blog-navigation.test.tsapps/landing/test/observability.test.ts
💤 Files with no reviewable changes (1)
- apps/landing/test/blog-navigation.test.ts
| Codex, Claude, OpenCode, Pi, and supported MCP clients while each host independently | ||
| supplies and authorizes access. | ||
|
|
||
| Code Mode is the default surface: each configured backend becomes a typed `caplets.<id>` handle that an agent can inspect, search, call, filter, and summarize in one workflow. Direct and progressive exposure remain available for clients and tasks that need them. |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Document Caplet handles, not backend handles.
The Code Mode declaration generator creates caplets.<id> properties from configured Caplets and their caplet.id values, not directly from backend instances. Change “each configured backend” to “each configured Caplet” so users do not infer a one-to-one backend/handle mapping.
Proposed wording
-Code Mode is the default surface: each configured backend becomes a typed `caplets.<id>` handle
+Code Mode is the default surface: each configured Caplet becomes a typed `caplets.<id>` handle📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| Code Mode is the default surface: each configured backend becomes a typed `caplets.<id>` handle that an agent can inspect, search, call, filter, and summarize in one workflow. Direct and progressive exposure remain available for clients and tasks that need them. | |
| Code Mode is the default surface: each configured Caplet becomes a typed `caplets.<id>` handle that an agent can inspect, search, call, filter, and summarize in one workflow. Direct and progressive exposure remain available for clients and tasks that need them. |
🤖 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 `@apps/docs/src/content/docs/index.mdx` at line 15, Update the Code Mode
description to say that each configured Caplet becomes a typed caplets.<id>
handle, replacing the inaccurate reference to each configured backend while
preserving the rest of the explanation.
| - **Caplet Activation** - The first successful backend operation executed through a configured Caplet. Landing clicks, catalog views, installation, and setup completion are funnel diagnostics, not activation. | ||
| - **Whole Stack retention** - Repeat successful Caplet executions across backend families, indicating that users expanded beyond the first no-auth capability into personally relevant work. |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win
Align “Caplet Activation” with the intended activation milestone.
This currently counts only the first successful backend operation, but the PR objective defines activation as that success followed by connecting a capability from the user’s own stack. Define the follow-up connection in this metric, or split first execution and activation into separate events; otherwise retention and activation reporting will use the wrong cohort.
Proposed wording
-- **Caplet Activation** - The first successful backend operation executed through a configured Caplet.
+- **Caplet Activation** - A first successful backend operation followed by connecting a capability from the user's own stack.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - **Caplet Activation** - The first successful backend operation executed through a configured Caplet. Landing clicks, catalog views, installation, and setup completion are funnel diagnostics, not activation. | |
| - **Whole Stack retention** - Repeat successful Caplet executions across backend families, indicating that users expanded beyond the first no-auth capability into personally relevant work. | |
| - **Caplet Activation** - The first successful backend operation executed through a configured Caplet. Landing clicks, catalog views, installation, and setup completion are funnel diagnostics, not activation. | |
| **Caplet Activation** - A first successful backend operation followed by connecting a capability from the user's own stack. | |
| - **Whole Stack retention** - Repeat successful Caplet executions across backend families, indicating that users expanded beyond the first no-auth capability into personally relevant work. |
🤖 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 `@STRATEGY.md` around lines 22 - 23, Update the “Caplet Activation” definition
in STRATEGY.md to require both the first successful Caplet backend operation and
a subsequent connection of a capability from the user’s own stack.
Alternatively, split first execution and activation into distinct events,
ensuring retention and activation cohorts use the milestone that includes the
follow-up connection.
Preview DeployedLanding: https://pr-248.preview.caplets.dev Built from commit efff0d1 |
Summary
Verification
pnpm verifyCloses #244
Summary by CodeRabbit
New Features
Accessibility & Tracking