cue-ai 0.9.2 → 0.9.3
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 +4 -3
- package/README.md +148 -170
- package/bin/cue-learnings +30 -4
- package/bin/cue-review-progress +0 -0
- package/bin/cue-review-watch +0 -0
- package/dist/cue.js +4328 -3108
- package/package.json +1 -1
- package/plugins/cue/commands/cue-switch.md +1 -1
- package/plugins/cue/commands/cue.md +1 -1
- package/profiles/backend/profile.yaml +4 -0
- package/profiles/browser/profile.yaml +4 -0
- package/profiles/career/profile.yaml +2 -13
- package/profiles/commerce/profile.yaml +0 -2
- package/profiles/coolify/profile.yaml +0 -1
- package/profiles/core/profile.yaml +78 -11
- package/profiles/dash-merge-test/profile.yaml +6 -1
- package/profiles/designer/profile.yaml +9 -1
- package/profiles/dropshipping/profile.yaml +69 -0
- package/profiles/frontend/profile.yaml +4 -0
- package/profiles/google-ads/profile.yaml +34 -0
- package/profiles/google-analytics/profile.yaml +34 -0
- package/profiles/google-drive/profile.yaml +34 -0
- package/profiles/gstack/profile.yaml +117 -29
- package/profiles/marketing/profile.yaml +0 -1
- package/profiles/media/README.md +70 -0
- package/profiles/media/profile.yaml +104 -0
- package/profiles/nano-banana/profile.yaml +52 -0
- package/profiles/ops/profile.yaml +1 -2
- package/profiles/secops/profile.yaml +3 -0
- package/profiles/skill-writer/profile.yaml +15 -0
- package/profiles/video/profile.yaml +3 -0
- package/profiles/web-frontend-base/profile.yaml +6 -0
- package/profiles/webshop/profile.yaml +0 -1
- package/profiles/webshop-google/profile.yaml +1 -0
- package/profiles/x-growth-bot/profile.yaml +2 -0
- package/resources/icons/generate-icons.py +2 -128
- package/resources/mcps/configs/claude.sanitized.json +88 -20
- package/resources/mcps/configs/claude_runtime.sanitized.json +40 -1
- package/resources/mcps/configs/codex.sanitized.json +29 -0
- package/resources/skills/skills/career/job-hunter/LICENSE +21 -0
- package/resources/skills/skills/career/job-hunter/README.md +323 -0
- package/resources/skills/skills/career/job-hunter/SKILL.md +91 -0
- package/resources/skills/skills/career/job-hunter/agents/README.md +96 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-assessment-prep.md +195 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-ats-scan.md +155 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-bias-audit.md +224 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-cover-letter.md +69 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-decode-jd.md +117 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-fit-score.md +183 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-linkedin-audit.md +74 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-linkedin-scrape.md +255 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-portfolio-brief.md +123 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-reality-check.md +164 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-reference-prep.md +150 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-rejection-analysis.md +172 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-resume.md +70 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-skills-gap-filler.md +109 -0
- package/resources/skills/skills/career/job-hunter/agents/career-internal.md +94 -0
- package/resources/skills/skills/career/job-hunter/agents/career-linkedin-content.md +173 -0
- package/resources/skills/skills/career/job-hunter/agents/career-linkedin-scanner.md +262 -0
- package/resources/skills/skills/career/job-hunter/agents/career-network-message.md +108 -0
- package/resources/skills/skills/career/job-hunter/agents/career-promote.md +102 -0
- package/resources/skills/skills/career/job-hunter/agents/career-review.md +71 -0
- package/resources/skills/skills/career/job-hunter/agents/interview-debrief.md +117 -0
- package/resources/skills/skills/career/job-hunter/agents/interview-mock.md +171 -0
- package/resources/skills/skills/career/job-hunter/agents/interview-panel-decoder.md +152 -0
- package/resources/skills/skills/career/job-hunter/agents/interview-prep.md +184 -0
- package/resources/skills/skills/career/job-hunter/agents/interview-question-bank.md +133 -0
- package/resources/skills/skills/career/job-hunter/agents/interview-research.md +148 -0
- package/resources/skills/skills/career/job-hunter/agents/offer-compare.md +117 -0
- package/resources/skills/skills/career/job-hunter/agents/offer-counteroffer.md +144 -0
- package/resources/skills/skills/career/job-hunter/agents/offer-deadline-manager.md +148 -0
- package/resources/skills/skills/career/job-hunter/agents/offer-negotiate.md +126 -0
- package/resources/skills/skills/career/job-hunter/agents/offer-schedule.md +99 -0
- package/resources/skills/skills/career/job-hunter/agents/offer-thankyou.md +80 -0
- package/resources/skills/skills/career/job-hunter/agents/search-company-research.md +146 -0
- package/resources/skills/skills/career/job-hunter/agents/search-follow-up.md +129 -0
- package/resources/skills/skills/career/job-hunter/agents/search-ghost-job-detector.md +152 -0
- package/resources/skills/skills/career/job-hunter/agents/search-inbox-scan.md +193 -0
- package/resources/skills/skills/career/job-hunter/agents/search-interview-scorecard.md +164 -0
- package/resources/skills/skills/career/job-hunter/agents/search-jobs.md +149 -0
- package/resources/skills/skills/career/job-hunter/agents/search-momentum-check.md +194 -0
- package/resources/skills/skills/career/job-hunter/agents/search-outreach.md +85 -0
- package/resources/skills/skills/career/job-hunter/agents/search-referral-finder.md +124 -0
- package/resources/skills/skills/career/job-hunter/agents/search-salary.md +96 -0
- package/resources/skills/skills/career/job-hunter/agents/search-send-email.md +109 -0
- package/resources/skills/skills/career/job-hunter/agents/search-tracker-update.md +127 -0
- package/resources/skills/skills/career/job-hunter/inputs/README.md +26 -0
- package/resources/skills/skills/career/job-hunter/inputs/apply-linkedin-url.txt +8 -0
- package/resources/skills/skills/career/job-hunter/inputs/interview-context.md +24 -0
- package/resources/skills/skills/career/job-hunter/inputs/job-description.md +20 -0
- package/resources/skills/skills/career/job-hunter/inputs/job-search-criteria.md +36 -0
- package/resources/skills/skills/career/job-hunter/inputs/my-linkedin.md +24 -0
- package/resources/skills/skills/career/job-hunter/inputs/my-resume.md +28 -0
- package/resources/skills/skills/career/job-hunter/inputs/search-outreach-target.md +24 -0
- package/resources/skills/skills/career/job-hunter/rules/README.md +37 -0
- package/resources/skills/skills/career/job-hunter/rules/writing-rules.md +81 -0
- package/resources/skills/skills/design/banana/SKILL.md +375 -0
- package/resources/skills/skills/design/banana/references/cost-tracking.md +47 -0
- package/resources/skills/skills/design/banana/references/gemini-models.md +236 -0
- package/resources/skills/skills/design/banana/references/mcp-tools.md +145 -0
- package/resources/skills/skills/design/banana/references/post-processing.md +192 -0
- package/resources/skills/skills/design/banana/references/presets.md +69 -0
- package/resources/skills/skills/design/banana/references/prompt-engineering.md +481 -0
- package/resources/skills/skills/design/banana/scripts/batch.py +97 -0
- package/resources/skills/skills/design/banana/scripts/cost_tracker.py +191 -0
- package/resources/skills/skills/design/banana/scripts/edit.py +159 -0
- package/resources/skills/skills/design/banana/scripts/generate.py +168 -0
- package/resources/skills/skills/design/banana/scripts/presets.py +154 -0
- package/resources/skills/skills/design/banana/scripts/setup_mcp.py +151 -0
- package/resources/skills/skills/design/banana/scripts/validate_setup.py +133 -0
- package/resources/skills/skills/gstack/ship/SKILL.md +13 -0
- package/resources/skills/skills/media/3d-logo-animation/SKILL.md +59 -0
- package/resources/skills/skills/media/action-figure-generator/SKILL.md +48 -0
- package/resources/skills/skills/media/ad-creative/SKILL.md +79 -0
- package/resources/skills/skills/media/ai-clipping/SKILL.md +194 -0
- package/resources/skills/skills/media/ai-clipping/scripts/run-ai-clipping.sh +200 -0
- package/resources/skills/skills/media/ai-fight-scene/SKILL.md +132 -0
- package/resources/skills/skills/media/amazon-product-listing/SKILL.md +68 -0
- package/resources/skills/skills/media/animal-video-generator/SKILL.md +59 -0
- package/resources/skills/skills/media/award-ceremony-video/SKILL.md +87 -0
- package/resources/skills/skills/media/blog-header/SKILL.md +61 -0
- package/resources/skills/skills/media/brand-kit/SKILL.md +72 -0
- package/resources/skills/skills/media/brochures/SKILL.md +65 -0
- package/resources/skills/skills/media/cartoon-dance-animation/SKILL.md +62 -0
- package/resources/skills/skills/media/character-story-video/SKILL.md +84 -0
- package/resources/skills/skills/media/chibi-collage-effect/SKILL.md +63 -0
- package/resources/skills/skills/media/cinema-director/SKILL.md +93 -0
- package/resources/skills/skills/media/cinema-director/scripts/generate-film.sh +78 -0
- package/resources/skills/skills/media/color-analysis-board/SKILL.md +71 -0
- package/resources/skills/skills/media/core-edit/SKILL.md +48 -0
- package/resources/skills/skills/media/core-edit/edit-image.sh +54 -0
- package/resources/skills/skills/media/core-edit/enhance-image.sh +191 -0
- package/resources/skills/skills/media/core-edit/lipsync.sh +144 -0
- package/resources/skills/skills/media/core-edit/video-effects.sh +193 -0
- package/resources/skills/skills/media/core-media/SKILL.md +49 -0
- package/resources/skills/skills/media/core-media/create-music.sh +169 -0
- package/resources/skills/skills/media/core-media/generate-image.sh +161 -0
- package/resources/skills/skills/media/core-media/generate-video.sh +137 -0
- package/resources/skills/skills/media/core-media/image-to-video.sh +228 -0
- package/resources/skills/skills/media/core-media/schema_data.json +18708 -0
- package/resources/skills/skills/media/core-media/upload.sh +41 -0
- package/resources/skills/skills/media/core-platform/SKILL.md +41 -0
- package/resources/skills/skills/media/core-platform/check-result.sh +37 -0
- package/resources/skills/skills/media/core-platform/setup.sh +31 -0
- package/resources/skills/skills/media/couple-grid-creator/SKILL.md +47 -0
- package/resources/skills/skills/media/design-guide/SKILL.md +73 -0
- package/resources/skills/skills/media/drone-style-video/SKILL.md +61 -0
- package/resources/skills/skills/media/fashion-try-on/SKILL.md +61 -0
- package/resources/skills/skills/media/floor-plan-rendering/SKILL.md +56 -0
- package/resources/skills/skills/media/freeze-effect-video/SKILL.md +100 -0
- package/resources/skills/skills/media/giant-product-showcase/SKILL.md +61 -0
- package/resources/skills/skills/media/instagram-post/SKILL.md +58 -0
- package/resources/skills/skills/media/interior-design/SKILL.md +61 -0
- package/resources/skills/skills/media/interior-design-visualizer/SKILL.md +57 -0
- package/resources/skills/skills/media/jewelry-product-video/SKILL.md +61 -0
- package/resources/skills/skills/media/kdenlive/SKILL.md +106 -0
- package/resources/skills/skills/media/kdenlive/scripts/assemble.sh +57 -0
- package/resources/skills/skills/media/kdenlive/scripts/common.sh +30 -0
- package/resources/skills/skills/media/kdenlive/scripts/inspect.sh +19 -0
- package/resources/skills/skills/media/kdenlive/scripts/reframe.sh +22 -0
- package/resources/skills/skills/media/kdenlive/scripts/render.sh +16 -0
- package/resources/skills/skills/media/kdenlive/scripts/title-card.sh +25 -0
- package/resources/skills/skills/media/keyboard-art-maker/SKILL.md +44 -0
- package/resources/skills/skills/media/logo-branding/SKILL.md +70 -0
- package/resources/skills/skills/media/logo-creator/SKILL.md +80 -0
- package/resources/skills/skills/media/logo-creator/scripts/create-logo.sh +38 -0
- package/resources/skills/skills/media/logo-generator/SKILL.md +56 -0
- package/resources/skills/skills/media/multi-angle-reshoot/SKILL.md +70 -0
- package/resources/skills/skills/media/multi-angle-shots/SKILL.md +73 -0
- package/resources/skills/skills/media/music-video/SKILL.md +61 -0
- package/resources/skills/skills/media/nano-banana/SKILL.md +80 -0
- package/resources/skills/skills/media/nano-banana/scripts/generate-nano-art.sh +54 -0
- package/resources/skills/skills/media/one-shot-video/SKILL.md +56 -0
- package/resources/skills/skills/media/photo-pack-generator/SKILL.md +205 -0
- package/resources/skills/skills/media/photo-pack-generator/scripts/generate-pack.sh +241 -0
- package/resources/skills/skills/media/product-ad-cinematic/SKILL.md +78 -0
- package/resources/skills/skills/media/product-campaign/SKILL.md +76 -0
- package/resources/skills/skills/media/product-showcase-video/SKILL.md +60 -0
- package/resources/skills/skills/media/product-video-ad-maker/SKILL.md +59 -0
- package/resources/skills/skills/media/rednote-cover/SKILL.md +57 -0
- package/resources/skills/skills/media/seedance-2/SKILL.md +632 -0
- package/resources/skills/skills/media/seedance-2/scripts/generate-seedance.sh +701 -0
- package/resources/skills/skills/media/selfie-with-celebrities/SKILL.md +64 -0
- package/resources/skills/skills/media/social-media-video/SKILL.md +277 -0
- package/resources/skills/skills/media/social-media-video/scripts/run-social-video.sh +316 -0
- package/resources/skills/skills/media/social-pack/SKILL.md +58 -0
- package/resources/skills/skills/media/storyboard/SKILL.md +57 -0
- package/resources/skills/skills/media/storyboard-to-cooking-video/SKILL.md +143 -0
- package/resources/skills/skills/media/talking-baby-video/SKILL.md +57 -0
- package/resources/skills/skills/media/ugc-ads-workflow/SKILL.md +70 -0
- package/resources/skills/skills/media/ugc-lifestyle-try-on/SKILL.md +65 -0
- package/resources/skills/skills/media/ugc-video-factory/SKILL.md +134 -0
- package/resources/skills/skills/media/ui-design/SKILL.md +81 -0
- package/resources/skills/skills/media/ui-design/scripts/generate-mockup.sh +49 -0
- package/resources/skills/skills/media/url-to-design/SKILL.md +61 -0
- package/resources/skills/skills/media/workflow/SKILL.md +197 -0
- package/resources/skills/skills/media/workflow/scripts/discover-workflow.sh +18 -0
- package/resources/skills/skills/media/workflow/scripts/generate-workflow.sh +33 -0
- package/resources/skills/skills/media/workflow/scripts/interactive-run.sh +16 -0
- package/resources/skills/skills/media/workflow/scripts/list-workflows.sh +20 -0
- package/resources/skills/skills/media/workflow/scripts/run-workflow.sh +34 -0
- package/resources/skills/skills/media/youtube-shorts/SKILL.md +173 -0
- package/resources/skills/skills/media/youtube-shorts/scripts/run-youtube-shorts.sh +141 -0
- package/resources/skills/skills/media/youtube-thumbnail/SKILL.md +66 -0
- package/resources/skills/skills/meta/cue-developer/references/architecture.md +2 -2
- package/resources/skills/skills/meta/cue-usage/SKILL.md +1 -1
- package/resources/skills/skills/meta/profile-fit-monitor/SKILL.md +2 -2
- package/resources/skills/skills/meta/profile-optimizer/SKILL.md +1 -1
- package/resources/skills/skills/meta/profile-suggest/SKILL.md +7 -7
- package/resources/skills/skills/meta/profile-summon/SKILL.md +159 -0
- package/resources/skills/skills/meta/profile-summon/evals/evals.json +53 -0
- package/resources/skills/skills/meta/save-profile/SKILL.md +1 -1
- package/resources/skills/skills/meta/skill-reviewer/SKILL.md +3 -0
- package/resources/skills/skills/meta/skill-reviewer/references/tdd-for-skills.md +55 -0
- package/resources/skills/skills/research/find-skills/SKILL.md +1 -1
- package/resources/skills/skills/review/code-review-deep/SKILL.md +20 -0
- package/resources/skills/skills/security/trivy-scan/SKILL.md +139 -0
- package/resources/skills/skills/security/trivy-scan/scripts/ensure-trivy.sh +21 -0
- package/resources/skills/skills/tools/ccusage/SKILL.md +142 -0
- package/src/commands/_index.ts +8 -0
- package/src/commands/ai.ts +2 -2
- package/src/commands/auto-detect.test.ts +74 -0
- package/src/commands/auto-detect.ts +9 -7
- package/src/commands/cli.test.ts +20 -4
- package/src/commands/cli.ts +36 -20
- package/src/commands/create-profile.ts +2 -2
- package/src/commands/debug.ts +2 -2
- package/src/commands/discover.ts +14 -4
- package/src/commands/export-docker.ts +1 -1
- package/src/commands/features-batch1.test.ts +1 -1
- package/src/commands/gates.ts +1 -1
- package/src/commands/import-profile.ts +1 -1
- package/src/commands/init.ts +15 -11
- package/src/commands/install.test.ts +192 -0
- package/src/commands/install.ts +610 -0
- package/src/commands/launch-handoff.e2e.test.ts +33 -1
- package/src/commands/launch.e2e.test.ts +15 -10
- package/src/commands/launch.ts +73 -116
- package/src/commands/materialize.ts +2 -2
- package/src/commands/prune.ts +1 -1
- package/src/commands/security-audit.ts +1 -1
- package/src/commands/shell.ts +7 -7
- package/src/commands/skill-report.ts +1 -1
- package/src/commands/skills.ts +3 -3
- package/src/commands/snapshot.ts +2 -2
- package/src/commands/summon.test.ts +116 -0
- package/src/commands/summon.ts +338 -0
- package/src/commands/trigger-gaps.ts +1 -1
- package/src/commands/use.ts +47 -3
- package/src/commands/watch-live.ts +5 -5
- package/src/commands/watch.ts +8 -8
- package/src/index.ts +2 -0
- package/src/lib/active-sessions.test.ts +3 -3
- package/src/lib/active-sessions.ts +4 -4
- package/src/lib/auto-detect.test.ts +172 -8
- package/src/lib/auto-detect.ts +191 -136
- package/src/lib/codex-persona-parity.test.ts +58 -0
- package/src/lib/companion-detect.test.ts +43 -1
- package/src/lib/companion-detect.ts +35 -0
- package/src/lib/credentials-sync.test.ts +121 -1
- package/src/lib/credentials-sync.ts +95 -1
- package/src/lib/cwd-resolver.test.ts +8 -8
- package/src/lib/cwd-resolver.ts +2 -2
- package/src/lib/dashboard-merge.test.ts +9 -4
- package/src/lib/dashboard-server.ts +1 -1
- package/src/lib/picker.test.ts +1 -1
- package/src/lib/picker.ts +5 -5
- package/src/lib/profile-merge.test.ts +8 -0
- package/src/lib/profile-names.test.ts +3 -3
- package/src/lib/runtime-install.ts +166 -0
- package/src/lib/runtime-materializer.test.ts +137 -0
- package/src/lib/runtime-materializer.ts +105 -2
- package/src/lib/skill-router.test.ts +38 -0
- package/src/lib/skill-router.ts +65 -4
- package/profiles/eu-tender-research/README.md +0 -48
- package/profiles/eu-tender-research/logo.png +0 -0
- package/profiles/eu-tender-research/profile.yaml +0 -108
package/CHANGELOG.md
CHANGED
|
@@ -15,9 +15,10 @@ adheres to [Semantic Versioning](https://semver.org/).
|
|
|
15
15
|
- `bin/cue-review-progress` — append-only progress events to
|
|
16
16
|
`~/.config/cue/review-progress/<id>.jsonl` (the shared schema every reviewer writes).
|
|
17
17
|
- `/code-review` now emits per-file / per-dimension / per-finding progress events.
|
|
18
|
-
- The `auto-review` Stop-hook gate
|
|
19
|
-
independent merge-gate review is watchable
|
|
20
|
-
recursion guard, fail-open,
|
|
18
|
+
- The `auto-review` Stop-hook gate records its review to the same log, so the
|
|
19
|
+
independent merge-gate review is watchable too (verdict parsed with the progress
|
|
20
|
+
side-channel filtered out; invariants unchanged: recursion guard, fail-open,
|
|
21
|
+
binary verdict).
|
|
21
22
|
- Docs: [`docs/review-visibility.md`](./docs/review-visibility.md).
|
|
22
23
|
- **Self-learner (experimental · opt-in · default-OFF).** Profiles capture where their
|
|
23
24
|
skills fell short during a task and feed gated improvements back over time.
|
package/README.md
CHANGED
|
@@ -1,30 +1,3 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
Structured data for AI search engines (ChatGPT, Perplexity, Google AI Overviews)
|
|
3
|
-
and traditional crawlers. GitHub renders the README as raw HTML on github.com/<repo>
|
|
4
|
-
and via GitHub Pages, so the JSON-LD blocks below are picked up by both Google's
|
|
5
|
-
rich-results parser and LLM scrapers.
|
|
6
|
-
-->
|
|
7
|
-
<!--
|
|
8
|
-
<script type="application/ld+json">
|
|
9
|
-
{
|
|
10
|
-
"@context": "https://schema.org",
|
|
11
|
-
"@type": "SoftwareApplication",
|
|
12
|
-
"name": "cuecards",
|
|
13
|
-
"alternateName": ["cue", "cue-ai"],
|
|
14
|
-
"applicationCategory": "DeveloperApplication",
|
|
15
|
-
"operatingSystem": "Linux, macOS, Windows (WSL2)",
|
|
16
|
-
"description": "cuecards is an open-source agent profile manager for Claude Code, OpenAI Codex, Cursor, Cline, Gemini CLI, GitHub Copilot, Windsurf, Roo Code, Sourcegraph Amp, and Aider. One cuecard per directory — skills, MCPs, plugins, persona, playbooks, gates. Cut per-message token cost 10–25×.",
|
|
17
|
-
"url": "https://github.com/opencue/cuecards",
|
|
18
|
-
"downloadUrl": "https://www.npmjs.com/package/cue-ai",
|
|
19
|
-
"codeRepository": "https://github.com/opencue/cuecards",
|
|
20
|
-
"license": "https://github.com/opencue/cuecards/blob/main/LICENSE",
|
|
21
|
-
"programmingLanguage": "TypeScript",
|
|
22
|
-
"runtimePlatform": "Bun",
|
|
23
|
-
"offers": { "@type": "Offer", "price": "0", "priceCurrency": "USD" }
|
|
24
|
-
}
|
|
25
|
-
</script>
|
|
26
|
-
-->
|
|
27
|
-
|
|
28
1
|
<br>
|
|
29
2
|
|
|
30
3
|
<p align="center">
|
|
@@ -36,11 +9,11 @@
|
|
|
36
9
|
<h1 align="center">cuecards.</h1>
|
|
37
10
|
|
|
38
11
|
<p align="center">
|
|
39
|
-
<strong>The
|
|
12
|
+
<strong>The missing layer between you and your coding agent.</strong>
|
|
40
13
|
</p>
|
|
41
14
|
|
|
42
15
|
<p align="center">
|
|
43
|
-
<sub>Your agent walks into a directory. The cuecard tells it who to be.</sub>
|
|
16
|
+
<sub>Your agent walks into a directory. The cuecard tells it who to be — and loads only what the job needs.</sub>
|
|
44
17
|
</p>
|
|
45
18
|
|
|
46
19
|
<br>
|
|
@@ -70,6 +43,43 @@
|
|
|
70
43
|
|
|
71
44
|
---
|
|
72
45
|
|
|
46
|
+
## the problem.
|
|
47
|
+
|
|
48
|
+
You installed 330 skills and 15 MCP servers. Your agent re-reads **every one of them, on every message** — including the 320 it doesn't need for the task in front of it.
|
|
49
|
+
|
|
50
|
+
You pay for that context on every single turn. And the model gets *worse* at picking the right tool, because it's scanning a wall of irrelevant descriptions before it can act.
|
|
51
|
+
|
|
52
|
+
**cuecards loads only the cuecard for the directory you're in.** One project's skills, MCPs, persona, and gates — not your entire library. Less context, lower cost, sharper tool selection.
|
|
53
|
+
|
|
54
|
+
<br>
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## the money shot.
|
|
59
|
+
|
|
60
|
+
> Loading everything taxes every message. cuecards cut your always-on context **~9–16×** — and you can reproduce every number below with `cue cost --compare`.
|
|
61
|
+
|
|
62
|
+
| Loadout | Always-on context | Cost / 100 msgs (Sonnet input) |
|
|
63
|
+
|---|---|---|
|
|
64
|
+
| **Without cuecards** — `full` (every skill + MCP) | ~81k tokens | ~$24 😱 |
|
|
65
|
+
| **With cuecards** — `backend` profile | ~9k tokens | ~$2.70 ✅ |
|
|
66
|
+
| **With cuecards** — `caveman-quick` | ~6.8k tokens | ~$2.00 🚀 |
|
|
67
|
+
|
|
68
|
+
That's **~9× fewer always-on tokens** on a backend loadout (≈12× on `caveman-quick`, up to ≈16× on the leanest profiles) versus loading everything. The savings compound on every message of every session.
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
cue cost # token budget for your active profile
|
|
72
|
+
cue cost --compare # full table: every profile ranked vs the `full` baseline
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
<p align="center">
|
|
76
|
+
<sub><strong>< 5 ms</strong> warm launch · <strong>69</strong> pre-built cuecards · <strong>330+</strong> local skills · <strong>10</strong> AI agents · <strong>MIT</strong> · zero telemetry · no daemon</sub>
|
|
77
|
+
</p>
|
|
78
|
+
|
|
79
|
+
<br>
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
73
83
|
## what is a cuecard.
|
|
74
84
|
|
|
75
85
|
A **cuecard** is everything your AI coding agent needs to be useful in one directory — the skills it loads, the MCP servers it connects to, the plugins it boots with, the persona it adopts, the playbooks it follows, the quality gates that block its "done" claim.
|
|
@@ -85,6 +95,8 @@ One cuecard per project. Your agent reads the right one the moment you launch.
|
|
|
85
95
|
| **playbooks** | the steps the agent follows for known tasks |
|
|
86
96
|
| **gates** | what must pass before the agent says "done" |
|
|
87
97
|
|
|
98
|
+
This is what separates cuecards from a skills list: a cuecard is *composable expertise* — persona + playbooks + gates + evals + a failure loop — not just "more tools loaded."
|
|
99
|
+
|
|
88
100
|
<br>
|
|
89
101
|
|
|
90
102
|
---
|
|
@@ -116,76 +128,29 @@ Search. Install. Use. No config files to edit. Works the same with `codex`, `cur
|
|
|
116
128
|
|
|
117
129
|
---
|
|
118
130
|
|
|
119
|
-
##
|
|
120
|
-
|
|
121
|
-
<p align="center">
|
|
122
|
-
<a href="https://github.com/anthropics/claude-code"><img src="https://img.shields.io/badge/Claude_Code-cc785c?style=flat-square&logo=anthropic&logoColor=white" alt="Claude Code"></a>
|
|
123
|
-
<a href="https://github.com/openai/codex"><img src="https://img.shields.io/badge/Codex-000000?style=flat-square&logo=openai&logoColor=white" alt="Codex"></a>
|
|
124
|
-
<a href="https://cursor.sh"><img src="https://img.shields.io/badge/Cursor-000000?style=flat-square&logo=cursor&logoColor=white" alt="Cursor"></a>
|
|
125
|
-
<a href="https://github.com/cline/cline"><img src="https://img.shields.io/badge/Cline-5A45FF?style=flat-square" alt="Cline"></a>
|
|
126
|
-
<a href="https://github.com/google-gemini/gemini-cli"><img src="https://img.shields.io/badge/Gemini-4285F4?style=flat-square&logo=google&logoColor=white" alt="Gemini"></a>
|
|
127
|
-
<a href="https://github.com/features/copilot"><img src="https://img.shields.io/badge/Copilot-000000?style=flat-square&logo=github&logoColor=white" alt="Copilot"></a>
|
|
128
|
-
<a href="https://windsurf.com"><img src="https://img.shields.io/badge/Windsurf-06B6D4?style=flat-square" alt="Windsurf"></a>
|
|
129
|
-
<a href="https://github.com/RooVetGit/Roo-Code"><img src="https://img.shields.io/badge/Roo-7C3AED?style=flat-square" alt="Roo"></a>
|
|
130
|
-
<a href="https://sourcegraph.com/amp"><img src="https://img.shields.io/badge/Amp-FF4500?style=flat-square&logo=sourcegraph&logoColor=white" alt="Amp"></a>
|
|
131
|
-
<a href="https://aider.chat"><img src="https://img.shields.io/badge/Aider-14B8A6?style=flat-square" alt="Aider"></a>
|
|
132
|
-
</p>
|
|
133
|
-
|
|
134
|
-
<p align="center">
|
|
135
|
-
<sub>One cuecard. Ten supported agents.</sub>
|
|
136
|
-
</p>
|
|
137
|
-
|
|
138
|
-
<br>
|
|
139
|
-
|
|
140
|
-
---
|
|
141
|
-
|
|
142
|
-
## by the numbers.
|
|
143
|
-
|
|
144
|
-
<p align="center">
|
|
145
|
-
<strong>up to ~16×</strong> leaner always-on context
|
|
146
|
-
<br><br>
|
|
147
|
-
<strong>< 5 ms</strong> warm launch overhead
|
|
148
|
-
<br><br>
|
|
149
|
-
<strong>69</strong> pre-built cuecards · <strong>330+</strong> local skills
|
|
150
|
-
<br><br>
|
|
151
|
-
<strong>10</strong> AI coding agents supported
|
|
152
|
-
<br><br>
|
|
153
|
-
<strong>MIT</strong> open source · zero telemetry · no daemon
|
|
154
|
-
</p>
|
|
155
|
-
|
|
156
|
-
<br>
|
|
157
|
-
|
|
158
|
-
---
|
|
159
|
-
|
|
160
|
-
## the money shot.
|
|
161
|
-
|
|
162
|
-
> Loading everything costs you tokens on every single message. cuecards cut your always-on context ~9–16× — and you can reproduce every number below with `cue cost --compare`.
|
|
163
|
-
|
|
164
|
-
| Loadout | Always-on context | Cost / 100 msgs (Sonnet input) |
|
|
165
|
-
|---|---|---|
|
|
166
|
-
| **Without cuecards** — `full` (every skill + MCP) | ~81k tokens | ~$24 😱 |
|
|
167
|
-
| **With cuecards** — `backend` profile | ~9k tokens | ~$2.70 ✅ |
|
|
168
|
-
| **With cuecards** — `caveman-quick` | ~6.8k tokens | ~$2.00 🚀 |
|
|
169
|
-
|
|
170
|
-
That's **~9× fewer always-on tokens** on a backend loadout (≈12× on `caveman-quick`, up to ≈16× on the leanest profiles) versus loading everything. Your model also picks the right tool faster because it's not scanning irrelevant descriptions on every message.
|
|
171
|
-
|
|
172
|
-
```bash
|
|
173
|
-
cue cost # token budget for your active profile
|
|
174
|
-
cue cost --compare # full table: every profile ranked vs the `full` baseline
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
<br>
|
|
178
|
-
|
|
179
|
-
---
|
|
180
|
-
|
|
181
|
-
## why cuecards.
|
|
131
|
+
## why cuecards — and how it compares.
|
|
182
132
|
|
|
183
133
|
- **Cut always-on context up to ~16×.** Skills, MCPs, and plugins scoped per directory, not globally loaded into every session — reproduce it with `cue cost --compare`.
|
|
184
|
-
- **Five-dimensional agents.** Persona + playbooks + quality gates + evals + failure loop.
|
|
134
|
+
- **Five-dimensional agents.** Persona + playbooks + quality gates + evals + failure loop. Composable expertise, not just a longer tool list.
|
|
185
135
|
- **One cuecard, ten agents.** The same `profile.yaml` materializes into Claude Code, Codex, Cursor, Cline, Gemini, Copilot, Windsurf, Roo, Amp, and Aider native formats.
|
|
186
136
|
|
|
137
|
+
| | cuecards | skillport / agent-skills-cli | Kiro Powers |
|
|
138
|
+
|---|---|---|---|
|
|
139
|
+
| Skills | ✅ | ✅ | ✅ |
|
|
140
|
+
| MCPs | ✅ | — | ✅ |
|
|
141
|
+
| Plugins | ✅ | — | — |
|
|
142
|
+
| Per-directory profiles | ✅ | — | ◐ (IDE-only) |
|
|
143
|
+
| Inheritance | ✅ | — | — |
|
|
144
|
+
| Persona / playbooks / gates / evals | ✅ | — | — |
|
|
145
|
+
| Multi-agent (Cursor/Cline/Copilot/etc.) | ✅ (10) | Claude only | IDE-only |
|
|
146
|
+
| CLI installer | ✅ | — | — |
|
|
147
|
+
| Failure-feedback loop | ✅ | — | — |
|
|
148
|
+
| Daemon required | None | None | IDE process |
|
|
149
|
+
|
|
150
|
+
cuecards is the only one that treats agent expertise as a composable, per-directory system.
|
|
151
|
+
|
|
187
152
|
<details>
|
|
188
|
-
<summary><b>
|
|
153
|
+
<summary><b>More wins</b></summary>
|
|
189
154
|
|
|
190
155
|
<br>
|
|
191
156
|
|
|
@@ -201,63 +166,6 @@ cue cost --compare # full table: every profile ranked vs the `full` b
|
|
|
201
166
|
|
|
202
167
|
---
|
|
203
168
|
|
|
204
|
-
## reading cue's output — the colored tags.
|
|
205
|
-
|
|
206
|
-
cuecards-managed agents tag every research- or decision-relevant claim with a colored confidence marker so you can scan trust at a glance:
|
|
207
|
-
|
|
208
|
-
| Tier | Tag | Meaning |
|
|
209
|
-
|---|---|---|
|
|
210
|
-
| 🟢 Green | `[VERIFIED]` / `[KNOWN]` | Trust it (~90–99%) |
|
|
211
|
-
| 🟡 Yellow | `[INFERRED]` / `[ASSUMED]` | Verify if stakes matter (~50–85%) |
|
|
212
|
-
| 🟠 Orange | `[GUESSED]` / `[STALE]` | Verify before acting (~20–45%) |
|
|
213
|
-
| 🔴 Red | `[UNKNOWN]` | Don't trust; agent refused to fabricate |
|
|
214
|
-
|
|
215
|
-
Optional decile calibration on yellow/orange: `🟡 [INFERRED ~80%]`, `🟠 [GUESSED ~30%]`. The `~` signals it's a rough self-estimate, not a true probability.
|
|
216
|
-
|
|
217
|
-
Full system + when each tag fires: **[`resources/skills/skills/meta/integrity-tags/SKILL.md`](./resources/skills/skills/meta/integrity-tags/SKILL.md)** · Canonical protocol: **[`resources/personas/integrity-protocol.md`](./resources/personas/integrity-protocol.md)** (auto-injected into every profile via `persona_includes`).
|
|
218
|
-
|
|
219
|
-
<br>
|
|
220
|
-
|
|
221
|
-
---
|
|
222
|
-
|
|
223
|
-
## what you'll see during a run — the reviewer.
|
|
224
|
-
|
|
225
|
-
cuecards can ship an **independent review gate**. When the agent finishes a
|
|
226
|
-
code-producing turn in a cuecard that enables it, cue spawns a *fresh, separate*
|
|
227
|
-
reviewer agent over the working-tree diff **before the turn is allowed to finish**.
|
|
228
|
-
It runs as a normal step of a Claude Code run — so expect to see a reviewer agent
|
|
229
|
-
think for a while (a deep pass can run many minutes and tens of thousands of tokens).
|
|
230
|
-
This is by design, and it earns its keep.
|
|
231
|
-
|
|
232
|
-
A real catch from a live session: the reviewer flagged a **load-bearing unit bug** —
|
|
233
|
-
a product's `weight` was treated as kilograms in one place but grams in two others
|
|
234
|
-
(`weight >= 1000 ? kg : g`). Left in, the per-kg price renders as `€0.00` and a cart
|
|
235
|
-
reads `20000 kg`. The gate held the merge until it was fixed.
|
|
236
|
-
|
|
237
|
-
Two things so the behavior isn't surprising:
|
|
238
|
-
|
|
239
|
-
- **A red "Stop hook error" is the gate working, not a failure.** Claude Code renders
|
|
240
|
-
any *blocking* hook that way. It means the reviewer found a CRITICAL/HIGH issue and is
|
|
241
|
-
holding the turn until you address it. It caps at 2 rounds, then releases. Suppress it
|
|
242
|
-
for one turn with `[skip-auto-review]` in your message; turn it off entirely with
|
|
243
|
-
`rm ~/.config/cue/auto-review-enabled`.
|
|
244
|
-
- **You can watch the review live.** A long review otherwise shows only a spinner. Run
|
|
245
|
-
`cue-review-watch` in a second pane to see it move file-by-file with findings as they land:
|
|
246
|
-
|
|
247
|
-
```
|
|
248
|
-
16:42:03 📄 setup-plate-variants.ts
|
|
249
|
-
16:42:03 → unit convention
|
|
250
|
-
16:42:09 🔴 CRITICAL weight kg/g ambiguity → per-kg price shows €0.00
|
|
251
|
-
16:45:30 ✅ review complete 1 CRITICAL
|
|
252
|
-
```
|
|
253
|
-
|
|
254
|
-
Enable the gate with `touch ~/.config/cue/auto-review-enabled`. Full details:
|
|
255
|
-
[`docs/review-visibility.md`](./docs/review-visibility.md).
|
|
256
|
-
|
|
257
|
-
<br>
|
|
258
|
-
|
|
259
|
-
---
|
|
260
|
-
|
|
261
169
|
## the catalog.
|
|
262
170
|
|
|
263
171
|
> One repo. 69 pre-built expert agents. Pin one with `cue use <name>` and `claude` launches with that cuecard's skills, MCPs, hooks, and commands materialized.
|
|
@@ -319,6 +227,19 @@ claude # launches with that cuecard's loadout
|
|
|
319
227
|
|
|
320
228
|
The same `profile.yaml` materializes into each agent's native format — `.cursorrules`, `.clinerules`, `~/.gemini/skills/*.md`, `.github/copilot-instructions.md`, etc.
|
|
321
229
|
|
|
230
|
+
<p align="center">
|
|
231
|
+
<a href="https://github.com/anthropics/claude-code"><img src="https://img.shields.io/badge/Claude_Code-cc785c?style=flat-square&logo=anthropic&logoColor=white" alt="Claude Code"></a>
|
|
232
|
+
<a href="https://github.com/openai/codex"><img src="https://img.shields.io/badge/Codex-000000?style=flat-square&logo=openai&logoColor=white" alt="Codex"></a>
|
|
233
|
+
<a href="https://cursor.sh"><img src="https://img.shields.io/badge/Cursor-000000?style=flat-square&logo=cursor&logoColor=white" alt="Cursor"></a>
|
|
234
|
+
<a href="https://github.com/cline/cline"><img src="https://img.shields.io/badge/Cline-5A45FF?style=flat-square" alt="Cline"></a>
|
|
235
|
+
<a href="https://github.com/google-gemini/gemini-cli"><img src="https://img.shields.io/badge/Gemini-4285F4?style=flat-square&logo=google&logoColor=white" alt="Gemini"></a>
|
|
236
|
+
<a href="https://github.com/features/copilot"><img src="https://img.shields.io/badge/Copilot-000000?style=flat-square&logo=github&logoColor=white" alt="Copilot"></a>
|
|
237
|
+
<a href="https://windsurf.com"><img src="https://img.shields.io/badge/Windsurf-06B6D4?style=flat-square" alt="Windsurf"></a>
|
|
238
|
+
<a href="https://github.com/RooVetGit/Roo-Code"><img src="https://img.shields.io/badge/Roo-7C3AED?style=flat-square" alt="Roo"></a>
|
|
239
|
+
<a href="https://sourcegraph.com/amp"><img src="https://img.shields.io/badge/Amp-FF4500?style=flat-square&logo=sourcegraph&logoColor=white" alt="Amp"></a>
|
|
240
|
+
<a href="https://aider.chat"><img src="https://img.shields.io/badge/Aider-14B8A6?style=flat-square" alt="Aider"></a>
|
|
241
|
+
</p>
|
|
242
|
+
|
|
322
243
|
```bash
|
|
323
244
|
cue materialize cursor --profile backend # → .cursorrules + .cursor/mcp.json
|
|
324
245
|
cue materialize --all --profile backend # → all 10 agents at once
|
|
@@ -346,6 +267,58 @@ cue materialize --all --profile backend # → all 10 agents at once
|
|
|
346
267
|
|
|
347
268
|
---
|
|
348
269
|
|
|
270
|
+
## built-in rigor.
|
|
271
|
+
|
|
272
|
+
cuecards don't just load tools — they hold your agent to a standard.
|
|
273
|
+
|
|
274
|
+
### The reviewer gate
|
|
275
|
+
|
|
276
|
+
cuecards can ship an **independent review gate**. When the agent finishes a
|
|
277
|
+
code-producing turn in a cuecard that enables it, cue spawns a *fresh, separate*
|
|
278
|
+
reviewer agent over the working-tree diff **before the turn is allowed to finish**.
|
|
279
|
+
|
|
280
|
+
A real catch from a live session: the reviewer flagged a **load-bearing unit bug** —
|
|
281
|
+
a product's `weight` was treated as kilograms in one place but grams in two others
|
|
282
|
+
(`weight >= 1000 ? kg : g`). Left in, the per-kg price renders as `€0.00` and a cart
|
|
283
|
+
reads `20000 kg`. The gate held the merge until it was fixed.
|
|
284
|
+
|
|
285
|
+
Two things so the behavior isn't surprising:
|
|
286
|
+
|
|
287
|
+
- **A red "Stop hook error" is the gate working, not a failure.** Claude Code renders
|
|
288
|
+
any *blocking* hook that way. It means the reviewer found a CRITICAL/HIGH issue and is
|
|
289
|
+
holding the turn until you address it. It caps at 2 rounds, then releases. Suppress it
|
|
290
|
+
for one turn with `[skip-auto-review]` in your message; turn it off entirely with
|
|
291
|
+
`rm ~/.config/cue/auto-review-enabled`.
|
|
292
|
+
- **You can watch the review live.** Run `cue-review-watch` in a second pane to see it
|
|
293
|
+
move file-by-file with findings as they land:
|
|
294
|
+
|
|
295
|
+
```
|
|
296
|
+
16:42:03 📄 setup-plate-variants.ts
|
|
297
|
+
16:42:03 → unit convention
|
|
298
|
+
16:42:09 🔴 CRITICAL weight kg/g ambiguity → per-kg price shows €0.00
|
|
299
|
+
16:45:30 ✅ review complete 1 CRITICAL
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
Enable the gate with `touch ~/.config/cue/auto-review-enabled`. Full details:
|
|
303
|
+
[`docs/review-visibility.md`](./docs/review-visibility.md).
|
|
304
|
+
|
|
305
|
+
### Confidence tags
|
|
306
|
+
|
|
307
|
+
cuecards-managed agents tag every research- or decision-relevant claim with a colored confidence marker so you can scan trust at a glance:
|
|
308
|
+
|
|
309
|
+
| Tier | Tag | Meaning |
|
|
310
|
+
|---|---|---|
|
|
311
|
+
| 🟢 Green | `[VERIFIED]` / `[KNOWN]` | Trust it (~90–99%) |
|
|
312
|
+
| 🟡 Yellow | `[INFERRED]` / `[ASSUMED]` | Verify if stakes matter (~50–85%) |
|
|
313
|
+
| 🟠 Orange | `[GUESSED]` / `[STALE]` | Verify before acting (~20–45%) |
|
|
314
|
+
| 🔴 Red | `[UNKNOWN]` | Don't trust; agent refused to fabricate |
|
|
315
|
+
|
|
316
|
+
Optional decile calibration on yellow/orange: `🟡 [INFERRED ~80%]`, `🟠 [GUESSED ~30%]`. The `~` signals it's a rough self-estimate, not a true probability. Full system: **[`integrity-tags/SKILL.md`](./resources/skills/skills/meta/integrity-tags/SKILL.md)** · canonical protocol auto-injected into every profile via `persona_includes`.
|
|
317
|
+
|
|
318
|
+
<br>
|
|
319
|
+
|
|
320
|
+
---
|
|
321
|
+
|
|
349
322
|
## daily commands.
|
|
350
323
|
|
|
351
324
|
```bash
|
|
@@ -359,10 +332,14 @@ cue cost --compare # every profile ranked vs the `full` baseline
|
|
|
359
332
|
|
|
360
333
|
# System dependencies
|
|
361
334
|
cue cli install --all --yes # install every missing CLI
|
|
335
|
+
cue install <profile> # dry-run: prepare Claude/Codex runtimes
|
|
336
|
+
cue install <profile> --with-clis --yes
|
|
337
|
+
cue install repo owner/repo --profile <profile> --yes
|
|
362
338
|
|
|
363
339
|
# Quality + discovery
|
|
364
340
|
cue lint-skill <path> [--fix] # validate SKILL.md against R001-R008
|
|
365
341
|
cue marketplace discover --cli-aware # find skill repos on GitHub
|
|
342
|
+
cue install doctor --all-profiles # audit prepared runtimes
|
|
366
343
|
cue failures --propose [profile] # Claude drafts profile improvements
|
|
367
344
|
|
|
368
345
|
# Audit
|
|
@@ -435,25 +412,6 @@ Cold start: 50–200 ms. Warm start: <5 ms (sha256 compare + `exec`). Impercepti
|
|
|
435
412
|
No. Everything cue computes (including the per-skill usage bars in `cue optimizer`) reads from your local `~/.claude/projects/**/*.jsonl` transcripts. Nothing leaves the machine.
|
|
436
413
|
</details>
|
|
437
414
|
|
|
438
|
-
<details>
|
|
439
|
-
<summary><b>What's the difference between cue and skillport / Kiro Powers?</b></summary>
|
|
440
|
-
|
|
441
|
-
| | cue | skillport / agent-skills-cli | Kiro Powers |
|
|
442
|
-
|---|---|---|---|
|
|
443
|
-
| Skills | ✅ | ✅ | ✅ |
|
|
444
|
-
| MCPs | ✅ | — | ✅ |
|
|
445
|
-
| Plugins | ✅ | — | — |
|
|
446
|
-
| Per-directory profiles | ✅ | — | ◐ (IDE-only) |
|
|
447
|
-
| Inheritance | ✅ | — | — |
|
|
448
|
-
| Persona / playbooks / gates / evals | ✅ | — | — |
|
|
449
|
-
| Multi-agent (Cursor/Cline/Copilot/etc.) | ✅ (10) | Claude only | IDE-only |
|
|
450
|
-
| CLI installer | ✅ | — | — |
|
|
451
|
-
| Failure-feedback loop | ✅ | — | — |
|
|
452
|
-
| Daemon required | None | None | IDE process |
|
|
453
|
-
|
|
454
|
-
cuecards is the only one that treats agent expertise as a composable system.
|
|
455
|
-
</details>
|
|
456
|
-
|
|
457
415
|
<details>
|
|
458
416
|
<summary><b>What does cue NOT do?</b></summary>
|
|
459
417
|
|
|
@@ -467,6 +425,26 @@ cuecards is the only one that treats agent expertise as a composable system.
|
|
|
467
425
|
|
|
468
426
|
---
|
|
469
427
|
|
|
428
|
+
## api.
|
|
429
|
+
|
|
430
|
+
cuecards.cc has free public accounts and per-user API tokens. Register in the
|
|
431
|
+
**API tokens** view, mint a token (shown once), and call the API with a Bearer
|
|
432
|
+
header:
|
|
433
|
+
|
|
434
|
+
```bash
|
|
435
|
+
curl https://cuecards.cc/api/v1/me \
|
|
436
|
+
-H "Authorization: Bearer <your-token>"
|
|
437
|
+
# -> { "ok": true, "data": { "id": "...", "email": "...", "name": "..." } }
|
|
438
|
+
```
|
|
439
|
+
|
|
440
|
+
Auth is [BetterAuth](https://better-auth.com) (email + password) on Vercel
|
|
441
|
+
serverless functions backed by Neon Postgres. Setup, env vars, the migration,
|
|
442
|
+
local dev, and deploy steps live in [`web/AUTH.md`](./web/AUTH.md).
|
|
443
|
+
|
|
444
|
+
<br>
|
|
445
|
+
|
|
446
|
+
---
|
|
447
|
+
|
|
470
448
|
## deep dives.
|
|
471
449
|
|
|
472
450
|
The bits that didn't fit on the landing page:
|
package/bin/cue-learnings
CHANGED
|
@@ -15,7 +15,9 @@
|
|
|
15
15
|
#
|
|
16
16
|
# Usage:
|
|
17
17
|
# cue-learnings log --type <T> --key <K> --insight <S> --confidence <N> \
|
|
18
|
-
# --source <S> [--files <comma,list>]
|
|
18
|
+
# --source <S> [--files <comma,list>] [--skill <cat/slug>]
|
|
19
|
+
# --skill: for a pitfall/pattern, also enqueue a skill_gap in analytics.jsonl
|
|
20
|
+
# so the auto-evolve loop improves that skill (closes learning→skill).
|
|
19
21
|
# cue-learnings search [pattern] # most-recent first; jq if present, grep otherwise
|
|
20
22
|
# cue-learnings list # same as search with no pattern
|
|
21
23
|
# cue-learnings path # print the jsonl path for this project
|
|
@@ -41,7 +43,7 @@ cmd="${1:-}"
|
|
|
41
43
|
case "$cmd" in
|
|
42
44
|
log)
|
|
43
45
|
shift
|
|
44
|
-
TYPE="" KEY="" INSIGHT="" CONFIDENCE="" SOURCE="" FILES=""
|
|
46
|
+
TYPE="" KEY="" INSIGHT="" CONFIDENCE="" SOURCE="" FILES="" SKILL=""
|
|
45
47
|
while [[ $# -gt 0 ]]; do
|
|
46
48
|
case "$1" in
|
|
47
49
|
--type) TYPE="$2"; shift 2 ;;
|
|
@@ -50,6 +52,7 @@ case "$cmd" in
|
|
|
50
52
|
--confidence) CONFIDENCE="$2"; shift 2 ;;
|
|
51
53
|
--source) SOURCE="$2"; shift 2 ;;
|
|
52
54
|
--files) FILES="$2"; shift 2 ;;
|
|
55
|
+
--skill) SKILL="$2"; shift 2 ;;
|
|
53
56
|
*) echo "cue-learnings log: unknown flag $1" >&2; exit 1 ;;
|
|
54
57
|
esac
|
|
55
58
|
done
|
|
@@ -73,9 +76,13 @@ case "$cmd" in
|
|
|
73
76
|
fi
|
|
74
77
|
|
|
75
78
|
# Sanitize key — JSONL is line-delimited; newlines break the format
|
|
79
|
+
# Strip ALL C0 control chars (not just CR/LF): a raw tab in any field would
|
|
80
|
+
# make the JSONL line unparseable, and every downstream reader silently skips
|
|
81
|
+
# a malformed line — losing the learning AND its bridged skill_gap signal.
|
|
76
82
|
KEY=$(printf '%s' "$KEY" | tr -cd 'a-zA-Z0-9._-')
|
|
77
|
-
INSIGHT=$(printf '%s' "$INSIGHT" | tr -d '\
|
|
78
|
-
FILES=$(printf '%s' "$FILES" | tr -d '\
|
|
83
|
+
INSIGHT=$(printf '%s' "$INSIGHT" | tr -d '\000-\037')
|
|
84
|
+
FILES=$(printf '%s' "$FILES" | tr -d '\000-\037')
|
|
85
|
+
SKILL=$(printf '%s' "$SKILL" | tr -d '\000-\037')
|
|
79
86
|
|
|
80
87
|
mkdir -p "$PROJECT_DIR"
|
|
81
88
|
TS=$(date -u +%Y-%m-%dT%H:%M:%SZ)
|
|
@@ -108,6 +115,25 @@ case "$cmd" in
|
|
|
108
115
|
>> "$LEARNINGS_FILE"
|
|
109
116
|
|
|
110
117
|
echo "logged: $TYPE/$KEY ($CONFIDENCE/10) → $LEARNINGS_FILE"
|
|
118
|
+
|
|
119
|
+
# Bridge to the evolution loop: when a pitfall/pattern names a skill, also
|
|
120
|
+
# append a skill_gap event to analytics.jsonl so auto-evolve can pick that
|
|
121
|
+
# skill up. Closes the formerly-open learnings→skill-improvement loop. Only
|
|
122
|
+
# actionable types (pitfall/pattern) bridge; preferences/operational notes
|
|
123
|
+
# are about the user/process, not the skill, so they stay out of the queue.
|
|
124
|
+
if [[ -n "$SKILL" ]] && { [[ "$TYPE" == "pitfall" ]] || [[ "$TYPE" == "pattern" ]]; }; then
|
|
125
|
+
ANALYTICS="${XDG_CONFIG_HOME:-$HOME/.config}/cue/analytics.jsonl"
|
|
126
|
+
mkdir -p "$(dirname "$ANALYTICS")" 2>/dev/null || true
|
|
127
|
+
ATS=$(date -u +%Y-%m-%dT%H:%M:%S.000Z)
|
|
128
|
+
# The learning is already safely written; a bridge-write failure (disk full,
|
|
129
|
+
# perms) must NOT make this command exit non-zero — degrade to a warning.
|
|
130
|
+
if printf '{"ts":"%s","event":"skill_gap","agent":"claude-code","source":"learning","skill":"%s","gap_type":"weak-body","suggestion":"%s","confidence":%d}\n' \
|
|
131
|
+
"$ATS" "$(esc "$SKILL")" "$(esc "$INSIGHT")" "$CONFIDENCE" >> "$ANALYTICS" 2>/dev/null; then
|
|
132
|
+
echo "bridged: skill_gap for '$SKILL' → $ANALYTICS"
|
|
133
|
+
else
|
|
134
|
+
echo "cue-learnings: warning — could not bridge skill_gap to analytics (learning still logged)" >&2
|
|
135
|
+
fi
|
|
136
|
+
fi
|
|
111
137
|
;;
|
|
112
138
|
|
|
113
139
|
search|list)
|
package/bin/cue-review-progress
CHANGED
|
File without changes
|
package/bin/cue-review-watch
CHANGED
|
File without changes
|