cue-ai 0.9.0 → 0.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +40 -0
- package/README.md +82 -33
- package/bin/cue-review-progress +107 -0
- package/bin/cue-review-watch +98 -0
- package/dist/cue.js +7352 -3744
- package/package.json +16 -5
- package/profiles/_types.ts +9 -0
- package/profiles/backend/profile.yaml +2 -0
- package/profiles/blog-writer/profile.yaml +10 -0
- package/profiles/browser/profile.yaml +9 -2
- package/profiles/builder/profile.yaml +3 -6
- package/profiles/career/profile.yaml +13 -2
- package/profiles/claude-api/profile.yaml +1 -1
- package/profiles/commerce/profile.yaml +27 -3
- package/profiles/core/logo.png +0 -0
- package/profiles/core/profile.yaml +62 -2
- package/profiles/dash-merge-test/profile.yaml +109 -0
- package/profiles/designer/profile.yaml +2 -0
- package/profiles/designer-medusa-next/profile.yaml +4 -1
- package/profiles/designer-medusa-vite/profile.yaml +4 -1
- package/profiles/docs-writer/profile.yaml +3 -1
- package/profiles/eu-tender-research/README.md +48 -0
- package/profiles/eu-tender-research/logo.png +0 -0
- package/profiles/eu-tender-research/profile.yaml +108 -0
- package/profiles/finance/logo.png +0 -0
- package/profiles/finance/profile.yaml +46 -0
- package/profiles/frontend/profile.yaml +5 -9
- package/profiles/growth/profile.yaml +2 -3
- package/profiles/gstack/profile.yaml +15 -0
- package/profiles/higgsfield/profile.yaml +3 -0
- package/profiles/hyperframes/logo.png +0 -0
- package/profiles/hyperframes/profile.yaml +59 -0
- package/profiles/improver/profile.yaml +88 -0
- package/profiles/marketing/profile.yaml +0 -3
- package/profiles/medusa-dev/profile.yaml +2 -0
- package/profiles/medusa-next/profile.yaml +2 -3
- package/profiles/medusa-vite/profile.yaml +2 -3
- package/profiles/n8n/logo.png +0 -0
- package/profiles/n8n/profile.yaml +50 -0
- package/profiles/nextjs/profile.yaml +2 -3
- package/profiles/ops/profile.yaml +2 -0
- package/profiles/postizz/profile.yaml +13 -3
- package/profiles/python/profile.yaml +3 -0
- package/profiles/research/profile.yaml +3 -1
- package/profiles/schema.json +10 -0
- package/profiles/secops/profile.yaml +2 -0
- package/profiles/seo/profile.yaml +56 -0
- package/profiles/skill-writer/profile.yaml +8 -0
- package/profiles/ssh/profile.yaml +32 -0
- package/profiles/strapi/logo.png +0 -0
- package/profiles/strapi/profile.yaml +45 -0
- package/profiles/stripe/logo.png +0 -0
- package/profiles/stripe/profile.yaml +1 -0
- package/profiles/supabase/logo.png +0 -0
- package/profiles/supabase/profile.yaml +85 -0
- package/profiles/vercel/logo.png +0 -0
- package/profiles/vercel/profile.yaml +25 -1
- package/profiles/vite/profile.yaml +4 -3
- package/profiles/web-frontend-base/profile.yaml +5 -4
- package/profiles/webshop/profile.yaml +23 -5
- package/profiles/x-growth-bot/profile.yaml +44 -0
- package/resources/icons/generate-icons.py +128 -2
- package/resources/mcps/configs/claude.sanitized.json +42 -0
- package/resources/mcps/configs/codex.sanitized.json +7 -0
- package/resources/skills/skills/career/resume-version-manager/SKILL.md +351 -0
- package/resources/skills/skills/career/salary-negotiation-prep/SKILL.md +378 -0
- package/resources/skills/skills/content/pdf/SKILL.md +2 -0
- package/resources/skills/skills/content/postiz-cards/SKILL.md +48 -0
- package/resources/skills/skills/content/postiz-cards/scripts/analytics.sh +38 -0
- package/resources/skills/skills/content/postiz-cards/scripts/card.sh +42 -0
- package/resources/skills/skills/content/postiz-cards/scripts/lint.py +38 -0
- package/resources/skills/skills/design/headless-gif-demo/SKILL.md +1 -1
- package/resources/skills/skills/design/readme-svg-design/SKILL.md +1 -1
- package/resources/skills/skills/eu-funding/grant-outreach/SKILL.md +70 -0
- package/resources/skills/skills/eu-funding/hu-grant-finder/SKILL.md +114 -0
- package/resources/skills/skills/eu-funding/hu-grant-finder/evals.md +26 -0
- package/resources/skills/skills/eu-funding/ted-tender-search/SKILL.md +80 -0
- package/resources/skills/skills/eu-funding/ted-tender-search/evals.md +26 -0
- package/resources/skills/skills/eu-funding/ted-tender-search/scripts/ted-search.sh +46 -0
- package/resources/skills/skills/event-design/wedding-invitations/SKILL.md +1 -1
- package/resources/skills/skills/github/gx-agents/SKILL.md +96 -0
- package/resources/skills/skills/gstack/design-shotgun/SKILL.md +1 -1
- package/resources/skills/skills/marketing/ab-test-analyzer/SKILL.md +1 -1
- package/resources/skills/skills/marketing/ab-test-setup-and-analysis/SKILL.md +1 -1
- package/resources/skills/skills/marketing/account-structure-review/SKILL.md +1 -1
- package/resources/skills/skills/marketing/ad-copy-variant-generator/SKILL.md +1 -1
- package/resources/skills/skills/marketing/ad-extension-audit/SKILL.md +1 -1
- package/resources/skills/skills/marketing/ad-spend-allocator/SKILL.md +1 -1
- package/resources/skills/skills/marketing/anomaly-detection/SKILL.md +1 -1
- package/resources/skills/skills/marketing/attribution-model-comparison/SKILL.md +1 -1
- package/resources/skills/skills/marketing/audience-overlap-analysis/SKILL.md +7 -1
- package/resources/skills/skills/marketing/bid-strategy-recommendations/SKILL.md +7 -1
- package/resources/skills/skills/marketing/budget-scenario-planner/SKILL.md +6 -1
- package/resources/skills/skills/marketing/campaign-naming-convention-builder/SKILL.md +7 -1
- package/resources/skills/skills/marketing/channel-mix-optimizer/SKILL.md +7 -1
- package/resources/skills/skills/marketing/client-report-narratives/SKILL.md +6 -1
- package/resources/skills/skills/marketing/competitor-creative-analysis/SKILL.md +1 -1
- package/resources/skills/skills/marketing/competitor-teardown/SKILL.md +1 -1
- package/resources/skills/skills/marketing/content-repurposer/SKILL.md +1 -1
- package/resources/skills/skills/marketing/conversion-path-analysis/SKILL.md +1 -1
- package/resources/skills/skills/marketing/cpa-diagnostics/SKILL.md +1 -1
- package/resources/skills/skills/marketing/creative-fatigue-detection/SKILL.md +1 -1
- package/resources/skills/skills/marketing/day-hour-performance-breakdown/SKILL.md +1 -1
- package/resources/skills/skills/marketing/device-performance-split/SKILL.md +1 -1
- package/resources/skills/skills/marketing/e2e-seo-assistant/SKILL.md +1 -1
- package/resources/skills/skills/marketing/email-sequence-writer/SKILL.md +1 -1
- package/resources/skills/skills/marketing/frequency-cap-recommendations/SKILL.md +1 -1
- package/resources/skills/skills/marketing/geo-performance-analysis/SKILL.md +1 -1
- package/resources/skills/skills/marketing/google-ads-audit/SKILL.md +1 -1
- package/resources/skills/skills/marketing/icp-research-assistant/SKILL.md +1 -1
- package/resources/skills/skills/marketing/keyword-cannibalization-check/SKILL.md +1 -1
- package/resources/skills/skills/marketing/landing-page-audit/SKILL.md +1 -1
- package/resources/skills/skills/marketing/landing-page-audit-quick/SKILL.md +1 -1
- package/resources/skills/skills/marketing/linkedin-ads-audit/SKILL.md +1 -1
- package/resources/skills/skills/marketing/meta-ads-audit/SKILL.md +1 -1
- package/resources/skills/skills/marketing/pacing-monitor/SKILL.md +1 -1
- package/resources/skills/skills/marketing/performance-benchmarking/SKILL.md +1 -1
- package/resources/skills/skills/marketing/programmatic-seo-builder/SKILL.md +1 -1
- package/resources/skills/skills/marketing/quality-score-breakdown/SKILL.md +1 -1
- package/resources/skills/skills/marketing/reddit-ads-audit/SKILL.md +1 -1
- package/resources/skills/skills/marketing/retargeting-window-analysis/SKILL.md +1 -1
- package/resources/skills/skills/marketing/roas-forecasting/SKILL.md +1 -1
- package/resources/skills/skills/marketing/search-term-mining/SKILL.md +1 -1
- package/resources/skills/skills/marketing/utm-tracking-generator/SKILL.md +1 -1
- package/resources/skills/skills/marketing/wasted-spend-finder/SKILL.md +1 -1
- package/resources/skills/skills/marketing/weekly-account-summary/SKILL.md +1 -1
- package/resources/skills/skills/meta/awesome-list-submit/SKILL.md +4 -4
- package/resources/skills/skills/meta/cue-dashboard/SKILL.md +109 -0
- package/resources/skills/skills/meta/cue-developer/SKILL.md +161 -0
- package/resources/skills/skills/meta/cue-developer/evals/evals.json +57 -0
- package/resources/skills/skills/meta/cue-developer/references/architecture.md +65 -0
- package/resources/skills/skills/meta/cue-developer/references/build_and_test.md +72 -0
- package/resources/skills/skills/meta/cue-developer/references/contributing.md +75 -0
- package/resources/skills/skills/meta/cue-developer/references/conventions.md +57 -0
- package/resources/skills/skills/meta/cue-developer/references/first_time_setup.md +51 -0
- package/resources/skills/skills/meta/cue-developer/references/skill_and_mcp_authoring.md +84 -0
- package/resources/skills/skills/meta/cue-developer/references/troubleshooting.md +42 -0
- package/resources/skills/skills/meta/delegation-check/SKILL.md +148 -0
- package/resources/skills/skills/meta/delegation-check/specs/scan-algorithm.md +125 -0
- package/resources/skills/skills/meta/delegation-check/specs/separation-rules.md +190 -0
- package/resources/skills/skills/meta/focus/SKILL.md +62 -0
- package/resources/skills/skills/meta/help/SKILL.md +1 -1
- package/resources/skills/skills/meta/integrity-tags/SKILL.md +2 -0
- package/resources/skills/skills/meta/next-steps/SKILL.md +124 -0
- package/resources/skills/skills/meta/next-steps/evals/eval-set.json +92 -0
- package/resources/skills/skills/meta/profile-from-docs/SKILL.md +141 -0
- package/resources/skills/skills/meta/ralph-loop/SKILL.md +83 -0
- package/resources/skills/skills/meta/ralph-loop/scripts/loop.sh +73 -0
- package/resources/skills/skills/meta/skill-simplify/SKILL.md +136 -0
- package/resources/skills/skills/meta/skill-simplify/phases/01-analysis.md +173 -0
- package/resources/skills/skills/meta/skill-simplify/phases/02-optimize.md +104 -0
- package/resources/skills/skills/meta/skill-simplify/phases/03-check.md +145 -0
- package/resources/skills/skills/meta/smart-loader/scripts/smart-lookup.sh +13 -4
- package/resources/skills/skills/meta/verify-council/SKILL.md +182 -0
- package/resources/skills/skills/meta/verify-council/references/lane-prompts.md +103 -0
- package/resources/skills/skills/meta/verify-council/references/workflow.js +217 -0
- package/resources/skills/skills/nvidia/aiq-research/SKILL.md +1 -1
- package/resources/skills/skills/nvidia/cuopt-developer/SKILL.md +16 -1
- package/resources/skills/skills/nvidia/cuopt-developer/resources/contributing.md +2 -2
- package/resources/skills/skills/nvidia/cuopt-developer/resources/numerical_debugging.md +128 -0
- package/resources/skills/skills/nvidia/cuopt-developer/resources/python_bindings.md +2 -9
- package/resources/skills/skills/nvidia/cuopt-developer/resources/vrp_skills.md +166 -0
- package/resources/skills/skills/nvidia/cuopt-install/SKILL.md +2 -10
- package/resources/skills/skills/nvidia/cuopt-numerical-optimization-api-c/SKILL.md +3 -23
- package/resources/skills/skills/nvidia/cuopt-numerical-optimization-api-c/resources/examples.md +40 -20
- package/resources/skills/skills/nvidia/cuopt-numerical-optimization-api-python/SKILL.md +5 -1
- package/resources/skills/skills/nvidia/skill-evolution/SKILL.md +4 -5
- package/resources/skills/skills/research/trendradar/SKILL.md +1 -1
- package/resources/skills/skills/ssh/ssh-config/SKILL.md +94 -0
- package/resources/skills/skills/ssh/ssh-copy/SKILL.md +92 -0
- package/resources/skills/skills/ssh/ssh-harden/SKILL.md +108 -0
- package/resources/skills/skills/ssh/ssh-keys/SKILL.md +82 -0
- package/resources/skills/skills/ssh/ssh-paste-image/LICENSE +28 -0
- package/resources/skills/skills/ssh/ssh-paste-image/SKILL.md +149 -0
- package/resources/skills/skills/ssh/ssh-paste-image/scripts/build.sh +29 -0
- package/resources/skills/skills/ssh/ssh-paste-image/scripts/client/go.mod +3 -0
- package/resources/skills/skills/ssh/ssh-paste-image/scripts/client/main.go +79 -0
- package/resources/skills/skills/ssh/ssh-paste-image/scripts/daemon/ccimgd.service +12 -0
- package/resources/skills/skills/ssh/ssh-paste-image/scripts/daemon/com.ccimgd.plist +20 -0
- package/resources/skills/skills/ssh/ssh-paste-image/scripts/daemon/go.mod +3 -0
- package/resources/skills/skills/ssh/ssh-paste-image/scripts/daemon/main.go +98 -0
- package/resources/skills/skills/ssh/ssh-tunnel/SKILL.md +96 -0
- package/resources/skills/skills/strapi/building-with-strapi/SKILL.md +112 -0
- package/resources/skills/skills/strapi/strapi-cli/SKILL.md +93 -0
- package/resources/skills/skills/strapi/strapi-content-api/SKILL.md +115 -0
- package/resources/skills/skills/strapi/strapi-deploy/SKILL.md +89 -0
- package/resources/skills/skills/strapi/strapi-mcp-setup/SKILL.md +101 -0
- package/resources/skills/skills/strapi/strapi-plugins/SKILL.md +97 -0
- package/resources/skills/skills/tools/context7/SKILL.md +101 -0
- package/resources/skills/skills/tools/opensrc/SKILL.md +1 -1
- package/resources/skills/skills/tools/portless/SKILL.md +186 -0
- package/resources/skills/skills/xbot/operate/SKILL.md +229 -0
- package/src/commands/_index.ts +8 -0
- package/src/commands/ai-score.e2e.test.ts +11 -4
- package/src/commands/ai.ts +3 -4
- package/src/commands/auto-detect.ts +1 -1
- package/src/commands/cli.test.ts +1 -2
- package/src/commands/cli.ts +1 -1
- package/src/commands/cloud.ts +1 -1
- package/src/commands/current.ts +1 -4
- package/src/commands/dash.test.ts +110 -0
- package/src/commands/dash.ts +194 -0
- package/src/commands/dashboard.ts +26 -0
- package/src/commands/diff.ts +1 -1
- package/src/commands/discover.test.ts +1 -1
- package/src/commands/discover.ts +90 -40
- package/src/commands/doctor.test.ts +58 -0
- package/src/commands/doctor.ts +79 -3
- package/src/commands/eval-behavior.ts +1 -1
- package/src/commands/eval.ts +2 -2
- package/src/commands/evolve.ts +4 -3
- package/src/commands/failures.test.ts +1 -1
- package/src/commands/features-batch1.test.ts +6 -1
- package/src/commands/icon.ts +1 -5
- package/src/commands/import-profile.ts +1 -1
- package/src/commands/init.ts +50 -7
- package/src/commands/install-sh.e2e.test.ts +65 -0
- package/src/commands/launch-handoff.e2e.test.ts +88 -0
- package/src/commands/launch.e2e.test.ts +8 -1
- package/src/commands/launch.test.ts +29 -0
- package/src/commands/launch.ts +185 -131
- package/src/commands/lock.ts +0 -1
- package/src/commands/marketplace.ts +0 -4
- package/src/commands/materialize.ts +1 -1
- package/src/commands/mem.ts +341 -0
- package/src/commands/optimizer.ts +0 -3
- package/src/commands/playground.ts +1 -2
- package/src/commands/profile-draft-skill.ts +1 -1
- package/src/commands/replay-whatif.ts +1 -6
- package/src/commands/score.ts +2 -2
- package/src/commands/security.test.ts +88 -0
- package/src/commands/security.ts +74 -28
- package/src/commands/shell.test.ts +65 -4
- package/src/commands/shell.ts +67 -7
- package/src/commands/skills-test.ts +0 -1
- package/src/commands/skills.ts +28 -2
- package/src/commands/sources.ts +1 -2
- package/src/commands/status.ts +2 -6
- package/src/commands/submit-profile.ts +1 -1
- package/src/commands/suggest.ts +35 -10
- package/src/commands/trigger-gaps.test.ts +50 -0
- package/src/commands/trigger-gaps.ts +63 -29
- package/src/commands/update.ts +1 -1
- package/src/commands/validate.ts +16 -4
- package/src/commands/watch-live.ts +1 -1
- package/src/commands/workspace.ts +1 -1
- package/src/index.ts +26 -10
- package/src/lib/active-sessions.ts +1 -1
- package/src/lib/agent-adapters.test.ts +100 -0
- package/src/lib/agent-adapters.ts +2 -2
- package/src/lib/analytics.test.ts +88 -0
- package/src/lib/analytics.ts +82 -1
- package/src/lib/auto-detect.test.ts +10 -4
- package/src/lib/auto-detect.ts +19 -23
- package/src/lib/brand-icons.ts +0 -1
- package/src/lib/cache.ts +2 -3
- package/src/lib/claude-mem-env.test.ts +148 -0
- package/src/lib/claude-mem-env.ts +172 -0
- package/src/lib/combo-history.test.ts +53 -0
- package/src/lib/combo-history.ts +83 -0
- package/src/lib/companion-detect.test.ts +108 -0
- package/src/lib/companion-detect.ts +140 -0
- package/src/lib/companion-fetch.ts +4 -6
- package/src/lib/conditional-skills.test.ts +1 -1
- package/src/lib/config-paths.test.ts +53 -0
- package/src/lib/config-paths.ts +33 -0
- package/src/lib/dashboard-server.test.ts +351 -0
- package/src/lib/dashboard-server.ts +1476 -27
- package/src/lib/debug-log.test.ts +66 -0
- package/src/lib/debug-log.ts +45 -0
- package/src/lib/mcp-catalog.test.ts +102 -0
- package/src/lib/mcp-catalog.ts +193 -0
- package/src/lib/pair-suggestions.test.ts +111 -0
- package/src/lib/pair-suggestions.ts +98 -5
- package/src/lib/permissions.test.ts +76 -0
- package/src/lib/permissions.ts +125 -0
- package/src/lib/picker.test.ts +1106 -1
- package/src/lib/picker.ts +1230 -142
- package/src/lib/plugin-discovery.ts +126 -0
- package/src/lib/pr-poster.ts +1 -1
- package/src/lib/pr-throttle.ts +2 -6
- package/src/lib/profile-linter.test.ts +67 -1
- package/src/lib/profile-linter.ts +59 -14
- package/src/lib/profile-loader.test.ts +21 -0
- package/src/lib/profile-loader.ts +22 -3
- package/src/lib/profile-metrics.ts +2 -6
- package/src/lib/profile-names.test.ts +58 -0
- package/src/lib/repos.test.ts +57 -0
- package/src/lib/repos.ts +167 -0
- package/src/lib/resolver-npx.ts +10 -1
- package/src/lib/runtime-materializer.test.ts +200 -3
- package/src/lib/runtime-materializer.ts +129 -20
- package/src/lib/shared-profiles.ts +2 -3
- package/src/lib/skill-clis.test.ts +113 -0
- package/src/lib/skill-clis.ts +232 -0
- package/src/lib/skill-dependencies.ts +9 -1
- package/src/lib/skill-deps.ts +1 -1
- package/src/lib/skill-linter.ts +1 -1
- package/src/lib/skill-quality.ts +0 -1
- package/src/lib/skill-sandbox.test.ts +1 -1
- package/src/lib/skills-lock.test.ts +1 -1
- package/src/lib/telemetry-consent.ts +3 -5
- package/src/lib/telemetry-report.test.ts +2 -2
- package/src/lib/token-budget.ts +111 -0
- package/src/lib/trigger-gaps.test.ts +70 -0
- package/src/lib/trigger-gaps.ts +48 -6
- package/src/lib/tui/data.ts +1 -5
- package/src/lib/workflow-store.ts +150 -0
- package/src/lib/workspace-secrets.ts +0 -4
- package/src/lib/workspaces.ts +1 -1
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Scan algorithm
|
|
2
|
+
|
|
3
|
+
How to discover spawn sites, locate the spawned agent, parse both sides, and run
|
|
4
|
+
the 7 checks. Cue-native: no `ccw` CLI, no Gemini evaluator, no `.workflow/`
|
|
5
|
+
paths, no `ccw-tools` MCP. Plain Read / Grep / Glob / Bash, plus an optional
|
|
6
|
+
`Agent` for a fresh-context second pass on a large scan.
|
|
7
|
+
|
|
8
|
+
## 1. Determine scan scope
|
|
9
|
+
|
|
10
|
+
Parse the user's request into a scope.
|
|
11
|
+
|
|
12
|
+
| Signal | Scope |
|
|
13
|
+
|---|---|
|
|
14
|
+
| Path to a skill `SKILL.md` or command `.md` | That file plus every agent it spawns |
|
|
15
|
+
| Path to an agent `.md` | That agent plus every spawn site that targets it |
|
|
16
|
+
| A directory | Every `SKILL.md` and command file under it |
|
|
17
|
+
| "all" or no argument | Every `resources/skills/skills/**/SKILL.md`, `.claude/commands/*.md`, `.claude/agents/*.md` |
|
|
18
|
+
|
|
19
|
+
If the scope is unclear, ask with `AskUserQuestion`: one skill, one command-agent
|
|
20
|
+
pair, or a full scan.
|
|
21
|
+
|
|
22
|
+
## 2. Find spawn sites
|
|
23
|
+
|
|
24
|
+
Grep the in-scope skill and command files for spawn patterns. Both the current
|
|
25
|
+
`Agent(` form and the legacy `Task(` form, plus `subagent_type` dispatches.
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
grep -rn 'Agent(\|Task(\|subagent_type' "$SCOPE"
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
For each spawn site, extract three things:
|
|
32
|
+
- the `subagent_type` value (the agent name, or `general-purpose`)
|
|
33
|
+
- the full prompt string passed to the spawn
|
|
34
|
+
- the line range of that prompt
|
|
35
|
+
|
|
36
|
+
Many cue skills dispatch a `subagent_type: "general-purpose"` agent with an inline
|
|
37
|
+
prose prompt rather than a named agent file (see `gstack/ship`,
|
|
38
|
+
`review/code-review-deep`). For those, there is no agent file to cross-check, so
|
|
39
|
+
D1 to D6 score against the *inline role text inside the prompt itself* and D7 asks
|
|
40
|
+
whether the prompt states its own return contract. A `general-purpose` spawn with
|
|
41
|
+
no stated identity and no return contract is not a violation, it is the norm.
|
|
42
|
+
|
|
43
|
+
## 3. Locate the agent definition
|
|
44
|
+
|
|
45
|
+
For each named `subagent_type`, look in the standard spots.
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
ls .claude/agents/${AGENT}.md 2>/dev/null
|
|
49
|
+
ls resources/skills/skills/*/agents/${AGENT}.md 2>/dev/null
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
If no file is found and the type is not `general-purpose`, record a `MISSING_AGENT`
|
|
53
|
+
finding. That is itself a D7 error: the skill spawns an agent that does not exist.
|
|
54
|
+
|
|
55
|
+
## 4. Parse the prompt
|
|
56
|
+
|
|
57
|
+
Pull structured intent and anti-patterns out of the prompt string.
|
|
58
|
+
|
|
59
|
+
Intent blocks to find: objective, input file list, runtime parameters, output
|
|
60
|
+
location, expected return markers, downstream consumer, per-invocation quality
|
|
61
|
+
gate, revision instructions.
|
|
62
|
+
|
|
63
|
+
Anti-patterns to flag (these feed D1, D2, D5, D6):
|
|
64
|
+
- identity statements ("You are a...", "Your role is...")
|
|
65
|
+
- domain tables, heuristics, good/bad comparison pairs
|
|
66
|
+
- numbered process steps outside a revision block
|
|
67
|
+
- philosophy statements ("always prefer...", "never do...")
|
|
68
|
+
- technical decision nouns (library or pattern names) in free text
|
|
69
|
+
|
|
70
|
+
## 5. Parse the agent
|
|
71
|
+
|
|
72
|
+
From the agent file (or the system prompt of a named subagent type), pull:
|
|
73
|
+
identity, spawner list, responsibilities, guiding principles, return contract
|
|
74
|
+
(the full set of markers it emits), self-check quality gate, domain sections,
|
|
75
|
+
anti-patterns.
|
|
76
|
+
|
|
77
|
+
## 6. Run the 7 checks
|
|
78
|
+
|
|
79
|
+
For each spawn-site / agent pair, run D1 to D7 from
|
|
80
|
+
[separation-rules.md](separation-rules.md). Record severity and a one-line detail
|
|
81
|
+
for each dimension. Respect the exceptions: mode references, cross-cutting policy
|
|
82
|
+
blocks, and user-decision passthrough are not violations.
|
|
83
|
+
|
|
84
|
+
## 7. Aggregate and report
|
|
85
|
+
|
|
86
|
+
Per pair, show the 7 dimensions as PASS / WARN / ERROR with a short detail each.
|
|
87
|
+
Roll up to a verdict per the table in separation-rules.md (CLEAN / REVIEW /
|
|
88
|
+
CONFLICT). For every error and warning, give a fix: file and line, what is wrong,
|
|
89
|
+
which owner the content should move to, and a before/after snippet when short.
|
|
90
|
+
|
|
91
|
+
### Report shape
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
DELEGATION-CHECK > SCAN COMPLETE
|
|
95
|
+
|
|
96
|
+
Scope: <description>
|
|
97
|
+
Pairs checked: <N>
|
|
98
|
+
Findings: <E> errors, <W> warnings, <I> info
|
|
99
|
+
Verdict: CLEAN | REVIEW | CONFLICT
|
|
100
|
+
|
|
101
|
+
| Pair | D1 | D2 | D3 | D4 | D5 | D6 | D7 |
|
|
102
|
+
|------|----|----|----|----|----|----|----|
|
|
103
|
+
| <skill> -> <agent> | ok | warn | ok | ok | err | ok | ok |
|
|
104
|
+
|
|
105
|
+
Fix priority:
|
|
106
|
+
1. <highest-severity fix, file:line, owner to move to>
|
|
107
|
+
2. <next fix>
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Optional fresh-context pass
|
|
111
|
+
|
|
112
|
+
On a full-repo scan, dispatch the per-pair judging to a `general-purpose` agent
|
|
113
|
+
via the `Agent` tool so the parent context stays clean. The subagent reads one
|
|
114
|
+
pair, runs D1 to D7, and returns only the verdict row plus any fix lines. Skip
|
|
115
|
+
this for a single-pair check, the cost is not worth it.
|
|
116
|
+
|
|
117
|
+
## Success criteria
|
|
118
|
+
|
|
119
|
+
- Scope resolved and every in-scope file read
|
|
120
|
+
- Every spawn site found, with its full prompt string and target agent
|
|
121
|
+
- Every named agent located or recorded as `MISSING_AGENT`
|
|
122
|
+
- 7 dimensions scored per pair
|
|
123
|
+
- No false positive on mode references, cross-cutting policy, or user-decision passthrough
|
|
124
|
+
- A fix given for every error and warning
|
|
125
|
+
- Per-pair table shown and an overall verdict reached
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
# Content separation rules
|
|
2
|
+
|
|
3
|
+
Rules for the boundary between **delegation prompts** (the `prompt` string passed
|
|
4
|
+
to an `Agent(...)` / `Task(...)` spawn, or a `subagent_type` dispatch in a cue
|
|
5
|
+
skill or `.claude/commands/` file) and **agent role definitions** (the spawned
|
|
6
|
+
agent's own file under `.claude/agents/<name>.md`, or the system prompt of a
|
|
7
|
+
named `subagent_type`).
|
|
8
|
+
|
|
9
|
+
Adapted from the CCW delegation-check spec. Same algorithm, cue-native targets:
|
|
10
|
+
cue skills live in `resources/skills/skills/**/SKILL.md`, commands in
|
|
11
|
+
`.claude/commands/*.md`, agents in `.claude/agents/*.md`.
|
|
12
|
+
|
|
13
|
+
## Core principle
|
|
14
|
+
|
|
15
|
+
**The spawner owns WHEN and WHERE. The agent owns WHO and HOW.**
|
|
16
|
+
|
|
17
|
+
A delegation prompt tells the agent what to do *this time*. The agent definition
|
|
18
|
+
tells the agent who it *always* is. When the prompt restates identity, embeds
|
|
19
|
+
domain knowledge, or dictates process, it duplicates or fights the agent file.
|
|
20
|
+
They drift apart over time and the agent's self-understanding gets confused.
|
|
21
|
+
|
|
22
|
+
## Ownership matrix
|
|
23
|
+
|
|
24
|
+
### The delegation prompt owns
|
|
25
|
+
|
|
26
|
+
| Concern | Example |
|
|
27
|
+
|---|---|
|
|
28
|
+
| What to accomplish this run | "Audit test coverage for the diff on branch X" |
|
|
29
|
+
| Input file paths for this run | "Read src/foo.ts and the plan at .cue/plan.md" |
|
|
30
|
+
| Runtime parameters | "Mode: revision. Phase: 5." |
|
|
31
|
+
| Output location | "Write findings to /tmp/coverage.md" |
|
|
32
|
+
| Expected return markers (routing) | "Return `## PASS` or `## ISSUES FOUND`" |
|
|
33
|
+
| Who consumes the output | "Parent skill /ship reads your conclusion" |
|
|
34
|
+
| Revision context | "What changed: the checker flagged 3 gaps. Address them." |
|
|
35
|
+
| User interaction | `AskUserQuestion` calls |
|
|
36
|
+
| Banners / status display | "=== SHIP > coverage audit ===" |
|
|
37
|
+
|
|
38
|
+
### The agent role definition owns
|
|
39
|
+
|
|
40
|
+
| Concern | Example |
|
|
41
|
+
|---|---|
|
|
42
|
+
| Identity | "You are a coverage auditor." |
|
|
43
|
+
| Spawner list | "Spawned by: /ship, /code-review-deep" |
|
|
44
|
+
| Responsibilities | "Find untested branches in the changed lines." |
|
|
45
|
+
| Mandatory read protocol | "Read every file in the input list before judging." |
|
|
46
|
+
| Guiding principles | "Prefer false negatives over noise." |
|
|
47
|
+
| Domain expertise | Decision tables, heuristics, good/bad examples |
|
|
48
|
+
| Return protocol | The full set of return markers it can emit |
|
|
49
|
+
| Self-check | Permanent quality checks run on every invocation |
|
|
50
|
+
| Anti-patterns | "Do not flag generated files." |
|
|
51
|
+
|
|
52
|
+
## The 7 conflict dimensions
|
|
53
|
+
|
|
54
|
+
### D1 Role re-definition
|
|
55
|
+
|
|
56
|
+
**Question:** does the prompt redefine the agent's identity?
|
|
57
|
+
|
|
58
|
+
**Detect:** scan the prompt string for `You are a`, `You are the`, `Your role is`,
|
|
59
|
+
`Your job is to`, `Your responsibility is`, `Core responsibilities:`, or any line
|
|
60
|
+
that contradicts the agent's identity section.
|
|
61
|
+
|
|
62
|
+
**Allowed:** referencing a mode the agent already lists ("run in revision mode").
|
|
63
|
+
|
|
64
|
+
**Severity:** `error` if the prompt redefines the role. `warning` if it adds
|
|
65
|
+
responsibilities the agent file does not list.
|
|
66
|
+
|
|
67
|
+
### D2 Domain expertise leak
|
|
68
|
+
|
|
69
|
+
**Question:** does the prompt embed domain knowledge that belongs in the agent?
|
|
70
|
+
|
|
71
|
+
**Detect:**
|
|
72
|
+
- Decision or routing tables (`| Condition | Action |`) in the prompt
|
|
73
|
+
- Good-vs-bad comparison pairs (`| TOO VAGUE | JUST RIGHT |`)
|
|
74
|
+
- Heuristic rules ("If X then Y", "Always prefer Z")
|
|
75
|
+
- Anti-pattern lists ("DO NOT...", "NEVER...")
|
|
76
|
+
- Numbered rule lists over 3 items that are not revision instructions
|
|
77
|
+
|
|
78
|
+
**Exception:** a cross-cutting policy block (uniform rules applied to every agent
|
|
79
|
+
a skill spawns, such as anti-shallow-execution rules) is structural policy, not
|
|
80
|
+
domain knowledge. Flag it `info` unless its content duplicates an agent domain
|
|
81
|
+
section word for word.
|
|
82
|
+
|
|
83
|
+
**Severity:** `error` if the prompt holds domain tables or examples that duplicate
|
|
84
|
+
agent content. `warning` for heuristics not present in the agent.
|
|
85
|
+
|
|
86
|
+
### D3 Quality gate duplication
|
|
87
|
+
|
|
88
|
+
**Question:** do the prompt's quality checks overlap or fight the agent's own
|
|
89
|
+
self-check list?
|
|
90
|
+
|
|
91
|
+
**Detect:** fuzzy-match quality items between prompt and agent (over 60% token
|
|
92
|
+
overlap is a duplicate).
|
|
93
|
+
- **Duplicate:** same check in both. `warning`. They can diverge later.
|
|
94
|
+
- **Conflict:** contradictory limits (prompt says "max 3 tasks", agent says "max 5"). `error`.
|
|
95
|
+
- **Gap:** prompt expects a check the agent lacks. `info`.
|
|
96
|
+
|
|
97
|
+
**When duplication is fine:** the prompt adds an *invocation-specific* check not in
|
|
98
|
+
the agent's permanent gate (for example "phase 5 requirement IDs all covered").
|
|
99
|
+
|
|
100
|
+
### D4 Output format conflict
|
|
101
|
+
|
|
102
|
+
**Question:** does the prompt's expected output fight the agent's return contract?
|
|
103
|
+
|
|
104
|
+
**Detect:** extract return-marker strings from both sides and compare the sets.
|
|
105
|
+
- Prompt routes on `## DONE` but agent emits `## TASK COMPLETE` → markers differ.
|
|
106
|
+
- Prompt expects file output, agent contract defines only markers (or the reverse).
|
|
107
|
+
|
|
108
|
+
**Why it matters:** the spawner routes on markers. If they do not match, routing
|
|
109
|
+
breaks silently. The skill may hang or misread the result.
|
|
110
|
+
|
|
111
|
+
**Severity:** `error` if return markers conflict. `warning` if either side leaves
|
|
112
|
+
the format unspecified.
|
|
113
|
+
|
|
114
|
+
### D5 Process override
|
|
115
|
+
|
|
116
|
+
**Question:** does the prompt dictate HOW the agent works?
|
|
117
|
+
|
|
118
|
+
**Detect:** scan for step-by-step process outside a revision block:
|
|
119
|
+
- Numbered steps ("Step 1:", "First..., Then..., Finally...")
|
|
120
|
+
- Process flow beyond the objective
|
|
121
|
+
- Tool instructions ("Use grep to...", "Run this bash command...")
|
|
122
|
+
- Execution ordering that fights the agent's own flow
|
|
123
|
+
|
|
124
|
+
**Allowed:** a revision block telling the agent *what changed*, not *how to work*.
|
|
125
|
+
|
|
126
|
+
**Severity:** `error` if the prompt overrides the agent's process. `warning` for
|
|
127
|
+
process hints.
|
|
128
|
+
|
|
129
|
+
### D6 Scope authority conflict
|
|
130
|
+
|
|
131
|
+
**Question:** does the prompt make decisions the agent's domain should own?
|
|
132
|
+
|
|
133
|
+
**Detect:** technical nouns (library names, architecture patterns) in prompt free
|
|
134
|
+
text, outside an input-path description.
|
|
135
|
+
- Prompt picking the implementation (which library, which pattern) → conflict.
|
|
136
|
+
- Prompt passing through a user-locked decision from a context file → correct.
|
|
137
|
+
- Agent interpreting that locked decision → correct.
|
|
138
|
+
|
|
139
|
+
**Severity:** `error` if the prompt makes a domain decision the agent should own.
|
|
140
|
+
`info` if it passes through a user decision (the right behavior).
|
|
141
|
+
|
|
142
|
+
### D7 Missing contracts
|
|
143
|
+
|
|
144
|
+
**Question:** are the handoff points complete?
|
|
145
|
+
|
|
146
|
+
| Missing element | Impact |
|
|
147
|
+
|---|---|
|
|
148
|
+
| Agent has no return contract | Spawner cannot route on markers |
|
|
149
|
+
| Spawner ignores some agent return markers | BLOCKED / CHECKPOINT silently dropped |
|
|
150
|
+
| Agent expects input files but prompt omits them | Agent starts without context |
|
|
151
|
+
| Agent's spawner list omits this command | Agent may not expect this call pattern |
|
|
152
|
+
| Agent expects a structured input the prompt does not match | Agent misreads input |
|
|
153
|
+
|
|
154
|
+
**Severity:** `error` if return-marker handling is missing. `warning` if the agent
|
|
155
|
+
expects input the prompt does not provide.
|
|
156
|
+
|
|
157
|
+
## Severity classification
|
|
158
|
+
|
|
159
|
+
| Severity | When | Action |
|
|
160
|
+
|---|---|---|
|
|
161
|
+
| `error` | Actual conflict: contradictory content across prompt and agent | Must fix. Move content to the right owner. |
|
|
162
|
+
| `warning` | Duplication or boundary blur without contradiction | Should fix. Consolidate to one source of truth. |
|
|
163
|
+
| `info` | Acceptable pattern that looks like a violation but is not | No action. Note why it is fine. |
|
|
164
|
+
|
|
165
|
+
## Verdict
|
|
166
|
+
|
|
167
|
+
| Verdict | Condition |
|
|
168
|
+
|---|---|
|
|
169
|
+
| **CLEAN** | 0 errors, 0 to 2 warnings |
|
|
170
|
+
| **REVIEW** | 0 errors, 3 or more warnings |
|
|
171
|
+
| **CONFLICT** | 1 or more errors |
|
|
172
|
+
|
|
173
|
+
## Quick reference: is this content in the right place?
|
|
174
|
+
|
|
175
|
+
| Content | In prompt? | In agent? |
|
|
176
|
+
|---|---|---|
|
|
177
|
+
| "You are a..." | No, never | Yes, always |
|
|
178
|
+
| File paths for this run | Yes | No |
|
|
179
|
+
| Phase number, mode | Yes | No |
|
|
180
|
+
| Decision tables | No, never | Yes, always |
|
|
181
|
+
| Good/bad examples | No, never | Yes, always |
|
|
182
|
+
| "Write to: {path}" | Yes | No |
|
|
183
|
+
| Return-marker handling | Yes (routing) | Yes (definition) |
|
|
184
|
+
| Quality gate | Per-invocation only | Permanent self-check |
|
|
185
|
+
| "Read files first" | No, agent owns this | Yes, always |
|
|
186
|
+
| Cross-cutting policy block | OK as uniform policy | Preferred |
|
|
187
|
+
| Revision instructions | Yes (what changed) | No |
|
|
188
|
+
| Heuristics, philosophy | No, never | Yes, always |
|
|
189
|
+
| Banner display | Yes | No, never |
|
|
190
|
+
| `AskUserQuestion` | Yes | No, never |
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: focus
|
|
3
|
+
description: 'Use when user says "focus", "which skill", "what skill should I use", "route this", or faces a task in a profile with many loaded skills. Picks the best-fit loaded skill to invoke, fast.'
|
|
4
|
+
tags: [meta, routing, skills, focus]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Focus
|
|
8
|
+
|
|
9
|
+
Pick the right *loaded* skill for the task at hand. When a profile carries dozens of
|
|
10
|
+
skills, the cost is decision latency, not capability. Focus narrows the loaded set to the
|
|
11
|
+
one skill that fires, so you invoke it instead of freestyling.
|
|
12
|
+
|
|
13
|
+
Scope: skills already in the active profile. For a skill that is **not** loaded, use
|
|
14
|
+
[[smart-loader]] (it reads from disk). For catalog lookup or dedup before writing a new
|
|
15
|
+
skill, use [[skill-suggestion]].
|
|
16
|
+
|
|
17
|
+
## Steps
|
|
18
|
+
|
|
19
|
+
1. List what is loaded in the active profile:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
cue skills list
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
2. Narrow by intent (fuzzy match across the set):
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
cue skills search "<task keywords>"
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
3. Confirm a candidate by the prompts that historically fired it:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
cue skills triggers <skill-id>
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
4. Invoke the top match via the Skill tool. If 2+ fit, name them and pick the most
|
|
38
|
+
specific. If none fits the loaded set, hand off to [[smart-loader]] or say so plainly.
|
|
39
|
+
|
|
40
|
+
## How to match
|
|
41
|
+
|
|
42
|
+
- Read each candidate's `description:` trigger phrases against the task intent; the most
|
|
43
|
+
specific wins. A skill that names the exact tool or platform beats a generic one.
|
|
44
|
+
- One skill, one job: route to the single best fit, do not chain three skills for one task.
|
|
45
|
+
- Prefer a loaded skill over freestyling. Even a 70% fit usually beats raw improvisation,
|
|
46
|
+
because the skill carries the verified recipe.
|
|
47
|
+
|
|
48
|
+
## Rules
|
|
49
|
+
|
|
50
|
+
- Only route to skills in the active profile (`cue skills list`). For unloaded skills use
|
|
51
|
+
[[smart-loader]]; this skill never loads from disk.
|
|
52
|
+
- Name the match and the reason in one line before invoking, so the choice is auditable.
|
|
53
|
+
- If nothing fits, say so and offer [[smart-loader]] or a new skill. Do not force a bad match.
|
|
54
|
+
- Recommend only what the task needs: one skill if one fits.
|
|
55
|
+
|
|
56
|
+
## Example
|
|
57
|
+
|
|
58
|
+
User: "focus, I need to find EU tenders."
|
|
59
|
+
|
|
60
|
+
Run `cue skills list` and `cue skills search "tender"`, see `eu-funding/ted-tender-search`
|
|
61
|
+
match the intent and tool exactly, and invoke it. If the profile had no tender skill, hand
|
|
62
|
+
off to [[smart-loader]] to find one on disk.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: help
|
|
3
3
|
description: >-
|
|
4
|
-
Use when user says "help", "what can you do", or "
|
|
4
|
+
Use when user says "/help", "skill help", "what can you do", or "what skills do I have". Available workflow guidance: commands, routing, skill discovery.
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# How OMX Works
|
|
@@ -22,6 +22,8 @@ The full protocol lives at `resources/personas/integrity-protocol.md` and is pul
|
|
|
22
22
|
| 🟢 `[VERIFIED]` | I checked the source firsthand this session — read the code, ran the test, opened the spec | Act on it |
|
|
23
23
|
| 🟢 `[KNOWN]` | Well-documented public fact from training data — RFCs, language specs, mainstream library APIs | Act on it, unless this project deviates from the norm |
|
|
24
24
|
|
|
25
|
+
> **Visual claims demand visual proof.** A claim about *rendered* UI (layout, spacing, color, alignment, responsive behavior) is only `[VERIFIED]` after an in-browser check at the target viewport — a screenshot, or stronger, a computed-style / bounding-box measurement (Playwright `getComputedStyle()` / `getBoundingClientRect()`) with the measured value quoted. Reading the CSS/JSX alone is at most 🟡 `[INFERRED]`. (Full rule in `resources/personas/integrity-protocol.md`.)
|
|
26
|
+
|
|
25
27
|
### 🟡 Yellow — reasonable, verify if stakes matter (~50–85%)
|
|
26
28
|
|
|
27
29
|
| Tag | Meaning | Reader action |
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: next-steps
|
|
3
|
+
description: >-
|
|
4
|
+
Use when finishing a substantive task, or the user says "what's next" or
|
|
5
|
+
"next steps". Close with a ranked Next steps block: <=3 specific items tied
|
|
6
|
+
to what changed, and offer the top one.
|
|
7
|
+
tags: [meta, output-format, workflow]
|
|
8
|
+
category: meta
|
|
9
|
+
version: 1.0.0
|
|
10
|
+
requires_mcps: []
|
|
11
|
+
allowed-tools: []
|
|
12
|
+
triggers:
|
|
13
|
+
- "what's next"
|
|
14
|
+
- "next steps"
|
|
15
|
+
- "what should i do now"
|
|
16
|
+
- "follow ups"
|
|
17
|
+
- "follow-up suggestions"
|
|
18
|
+
- "what now"
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# next-steps
|
|
22
|
+
|
|
23
|
+
When you finish a substantive task, the last thing you say is the user's launch pad for what comes next. Default closings fail in three ways: they vanish, they go vague ("let me know if you need anything"), or they dump every conceivable move. This skill replaces that with a short, ranked, specific Next steps block, and offers to do the top one.
|
|
24
|
+
|
|
25
|
+
Treat the closing as the most useful sentence in the turn, not filler: the user reads it last and acts on it first.
|
|
26
|
+
|
|
27
|
+
## When to activate
|
|
28
|
+
|
|
29
|
+
Apply automatically right after you:
|
|
30
|
+
|
|
31
|
+
- built, fixed, refactored, or shipped something,
|
|
32
|
+
- produced a recommendation, plan, audit, or comparison,
|
|
33
|
+
- completed a multi-step request.
|
|
34
|
+
|
|
35
|
+
Concretely, the turn was substantive if you used Edit, Write, or a mutating command this turn, or produced a recommendation, a plan, or a list of three or more items. That is a signal a hook can see too, not a vibe.
|
|
36
|
+
|
|
37
|
+
Also when the user says "what's next", "next steps", "what should I do now", or "follow-ups".
|
|
38
|
+
|
|
39
|
+
Do not apply on trivial one-line answers, pure factual lookups, or mid-conversation clarifying questions. Under caveman or brief mode, collapse to a single terse line.
|
|
40
|
+
|
|
41
|
+
## The rubric
|
|
42
|
+
|
|
43
|
+
1. **Source every item from a real artifact this turn.** Each follow-up must trace to something concrete you can point at: a file you changed, a deferral you actually stated ("we'll do X later"), an error you hit, or the user's stated goal. If you cannot name its source, cut it. This is the line between "the freshness-guard path has no test, add one" and a generic "add tests."
|
|
44
|
+
2. **Rank by the three flavors, in this fixed order:**
|
|
45
|
+
1. **Continuation:** the obvious next step in this thread.
|
|
46
|
+
2. **Loose end or risk:** something this work created or exposed (an untested path, an implied follow-up, a risk you introduced).
|
|
47
|
+
3. **Upside:** optional polish or an adjacent win, marked optional.
|
|
48
|
+
The order is the priority. Lead with the continuation, never with the upside. Drop a flavor when nothing real fills it rather than padding.
|
|
49
|
+
3. **Cap at three.** More than three means you are dumping, not suggesting. One or two is the honest count more often than you think.
|
|
50
|
+
4. **Offer the top one as a do-it-now.** End with one question: "Want me to X?" One question, not a menu. The user should be able to reply "yes" and have you proceed.
|
|
51
|
+
5. **Be willing to say nothing pressing.** If the task is genuinely closed, say so in one line. Do not manufacture follow-ups to fill the block. "Nothing needed here, ready to ship" is a valid Next steps.
|
|
52
|
+
6. **Never re-suggest what you just did,** and never suggest a path you already know is blocked, out of scope, or declined this session.
|
|
53
|
+
7. **ROI tags are optional.** Only when the follow-ups are improvement-like and ranking by impact genuinely helps, borrow `meta/roi-estimator` tags (dimension, percent, tier). For a normal closing, the flavor order is the rank and ROI math is overkill.
|
|
54
|
+
|
|
55
|
+
## Pick the pattern by task type
|
|
56
|
+
|
|
57
|
+
Starting templates per task type. Always source the specifics from what actually happened (rubric item 1); these are scaffolds, not scripts.
|
|
58
|
+
|
|
59
|
+
| You just… | Typical Next steps |
|
|
60
|
+
|---|---|
|
|
61
|
+
| Fixed a bug | add a regression test for it; check whether the same bug exists elsewhere; state the root cause if it is not obvious |
|
|
62
|
+
| Built a feature | wire it into the caller or UI; add tests; document it; the one edge case you skipped |
|
|
63
|
+
| Refactored | run the suite to prove behavior held; the adjacent module with the same smell; delete code your change orphaned |
|
|
64
|
+
| Researched or answered | the one claim worth verifying independently; the obvious follow-up question; where to go deeper |
|
|
65
|
+
| Reviewed a diff | fix the top finding; re-review after fixes; the risk you flagged but did not block on |
|
|
66
|
+
| Set up or configured | the smoke test that proves it works; the next config step; document the setup |
|
|
67
|
+
|
|
68
|
+
## Format
|
|
69
|
+
|
|
70
|
+
Default, after a substantive task:
|
|
71
|
+
|
|
72
|
+
> **Next steps**
|
|
73
|
+
> 1. <recommended specific action>: <one-clause why>
|
|
74
|
+
> 2. <loose end or risk>
|
|
75
|
+
> 3. <optional upside>
|
|
76
|
+
>
|
|
77
|
+
> Want me to <top action>?
|
|
78
|
+
|
|
79
|
+
One or two items is fine when that is the honest count. For a single item, drop the list and just ask.
|
|
80
|
+
|
|
81
|
+
Caveman or brief mode:
|
|
82
|
+
|
|
83
|
+
> Next: <one action>. Want it?
|
|
84
|
+
|
|
85
|
+
## Anti-patterns
|
|
86
|
+
|
|
87
|
+
- **Vague filler.** "Let me know if you need anything else." Ranks nothing, offers nothing.
|
|
88
|
+
- **The dump.** Six bullets covering every branch. Now the user has to re-rank them, which was your job.
|
|
89
|
+
- **Generic follow-ups.** Items that fit any task ("add tests", "write docs") with no tie to what actually changed.
|
|
90
|
+
- **Manufactured urgency.** Inventing a next step when the task is closed. Padding erodes trust faster than silence.
|
|
91
|
+
- **Burying the offer.** Listing options but not offering to act. Keep the top item one "yes" away.
|
|
92
|
+
|
|
93
|
+
## When to skip
|
|
94
|
+
|
|
95
|
+
- Trivial or single-fact answers.
|
|
96
|
+
- Mid-conversation: the user asked a question and wants the answer, not a roadmap.
|
|
97
|
+
- The user explicitly asked for output only, no commentary.
|
|
98
|
+
- You already offered next steps this turn. Do not stack two blocks.
|
|
99
|
+
- The user is **accepting** a step you just offered ("yes", "do #1", "go"). That
|
|
100
|
+
is your cue to *execute*, not to open a new block. Finish the accepted action,
|
|
101
|
+
then a fresh Next steps block is fine. One block per completed action, never
|
|
102
|
+
two in flight.
|
|
103
|
+
|
|
104
|
+
## Example
|
|
105
|
+
|
|
106
|
+
After wiring a new profile and validating it:
|
|
107
|
+
|
|
108
|
+
> **Next steps**
|
|
109
|
+
> 1. Commit the three files on a branch off main: `cue validate` is green, so it is safe to land.
|
|
110
|
+
> 2. Wire `/goal` into the profile, the one piece we deferred earlier.
|
|
111
|
+
> 3. Optional: feature it in the picker so it shows under Featured.
|
|
112
|
+
>
|
|
113
|
+
> Want me to commit them?
|
|
114
|
+
|
|
115
|
+
Bad version of the same closing, for contrast:
|
|
116
|
+
|
|
117
|
+
> Let me know if you need anything else or want to make changes!
|
|
118
|
+
|
|
119
|
+
The bad one ranks nothing, ties to nothing, and offers no action to accept.
|
|
120
|
+
|
|
121
|
+
## Linking
|
|
122
|
+
|
|
123
|
+
- Related: [[roi-estimator]], the ranking discipline this skill borrows when follow-ups are improvement-like.
|
|
124
|
+
- Related: [[retro]], end-of-session process reflection (next-steps is per-task, retro is per-session).
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill_name": "next-steps",
|
|
3
|
+
"skill_path": "resources/skills/skills/meta/next-steps/SKILL.md",
|
|
4
|
+
"created": "2026-06-02",
|
|
5
|
+
"notes": "Auto-fire output-format skill. 'Trigger' = does Claude append a ranked Next steps block + offer-the-top-one after the turn? should_trigger:true means the block should appear; false means a block would be noise. Edge cases test the collapse/say-nothing rules.",
|
|
6
|
+
"scenarios": [
|
|
7
|
+
{
|
|
8
|
+
"id": 1,
|
|
9
|
+
"prompt": "Add a --dry-run flag to scripts/deploy.sh so it prints the planned actions without executing, and update the existing bats tests to cover it.",
|
|
10
|
+
"should_trigger": true,
|
|
11
|
+
"expected_behavior": "After implementing + updating tests, close with <=3 ranked Next steps: e.g. (1) run the test suite to confirm green, (2) loose end: document the flag in the README, (3) optional: add --dry-run to the sibling rollback.sh. Offer the top one."
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"id": 2,
|
|
15
|
+
"prompt": "Take a look at src/auth/middleware.ts and tell me what I should harden before this goes to production.",
|
|
16
|
+
"should_trigger": true,
|
|
17
|
+
"expected_behavior": "Produces a findings/recommendation list, then a Next steps block ranking the highest-risk fix first, tied to the specific findings (not generic 'add tests'). Offers to apply the top fix."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": 3,
|
|
21
|
+
"prompt": "ok that profile work looks good. what's next?",
|
|
22
|
+
"should_trigger": true,
|
|
23
|
+
"expected_behavior": "Explicit ask. Ranked <=3 follow-ups tied to the profile work just done; lead with the most-likely continuation; offer the top one as a do-it-now."
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": 4,
|
|
27
|
+
"prompt": "the profile picker throws when the profile list comes back empty — repro is just running it in a dir with no profiles. fix it.",
|
|
28
|
+
"should_trigger": true,
|
|
29
|
+
"expected_behavior": "Fixes the crash, then Next steps: (1) continuation = verify with the empty-dir repro, (2) loose end = add a regression test for the empty case, (3) optional = audit other list consumers for the same gap. Offer to add the test."
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"id": 5,
|
|
33
|
+
"prompt": "draft me a migration plan to move the repo from npm to bun — scripts, lockfile, CI, the works.",
|
|
34
|
+
"should_trigger": true,
|
|
35
|
+
"expected_behavior": "Delivers the plan, then a Next steps block: start with the lowest-risk first phase, name a loose end (CI cache invalidation), optional polish. Offers to begin phase 1."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"id": 6,
|
|
39
|
+
"prompt": "sweet, that works now. what shoudl i do now",
|
|
40
|
+
"should_trigger": true,
|
|
41
|
+
"expected_behavior": "Casual + typos, explicit ask. Same ranked block tied to the prior fix. Offer top one."
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"id": 7,
|
|
45
|
+
"prompt": "what's the default port postgres listens on?",
|
|
46
|
+
"should_trigger": false,
|
|
47
|
+
"why_not": "Pure factual lookup, one-line answer. A Next steps block here is manufactured filler — the skill's 'skip trivial/factual' rule."
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"id": 8,
|
|
51
|
+
"prompt": "wait, back up — why did you put that function on the edge runtime instead of node?",
|
|
52
|
+
"should_trigger": false,
|
|
53
|
+
"why_not": "Mid-conversation clarifying question. User wants the reasoning, not a roadmap. Skill explicitly skips mid-convo questions."
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"id": 9,
|
|
57
|
+
"prompt": "rename getUser to fetchUser in src/lib/user.ts",
|
|
58
|
+
"should_trigger": false,
|
|
59
|
+
"why_not": "Trivial unambiguous one-liner. 'Trivial work doesn't need a roadmap' — just do it and stop."
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"id": 10,
|
|
63
|
+
"prompt": "give me the raw JSON for the config schema. output only, no commentary or suggestions.",
|
|
64
|
+
"should_trigger": false,
|
|
65
|
+
"why_not": "User explicitly asked for output only. Skill's 'user asked for output only' skip condition."
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"id": 11,
|
|
69
|
+
"prompt": "yes, do #1",
|
|
70
|
+
"should_trigger": false,
|
|
71
|
+
"why_not": "User is accepting a previously-offered next step. Executing it is the action; opening a second full block mid-execution violates 'don't stack two blocks this turn'. A fresh block is fine only once #1 is fully done."
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"id": 12,
|
|
75
|
+
"prompt": "/caveman — the import path in cli.ts is wrong, points at ../lib instead of ../../lib. fix it.",
|
|
76
|
+
"should_trigger": "maybe",
|
|
77
|
+
"notes": "Caveman/brief mode active AND a real (non-trivial-ish) fix. Acceptable to collapse to a single terse line ('Next: run the build to confirm. Want it?') rather than a full block. Full multi-line block here would be wrong."
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"id": 13,
|
|
81
|
+
"prompt": "merge the two duplicate helper functions in utils.ts into one and update both call sites.",
|
|
82
|
+
"should_trigger": "maybe",
|
|
83
|
+
"notes": "Substantive refactor, but the task may be genuinely closed once done. Acceptable to fire with an honest 'Nothing pressing — tests green, ready to commit' single line rather than manufacturing three follow-ups. Tests the say-nothing rule."
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"id": 14,
|
|
87
|
+
"prompt": "fix the typo 'recieve' -> 'receive' in the README heading and that's it.",
|
|
88
|
+
"should_trigger": false,
|
|
89
|
+
"why_not": "Trivial single edit, and user signalled 'that's it'. No block. Acceptable either way but leaning skip — counts as graceful if no block appears."
|
|
90
|
+
}
|
|
91
|
+
]
|
|
92
|
+
}
|