cellm/skills/stack-update/SKILL.md
Execute CELLM stack update specs — verify dependency updates, analyze impact, create fix specs proactively, commit, and certify via Olympus. Use when: 'stack update', 'close stack specs', 'verify dependency updates'.
npx skillsauth add murillodutt/cellm cellm/skills/stack-updateInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Verify dependency updates, analyze code impact, create fix specs, commit changes, and certify via Olympus.
0. MANTRA — inject mental model (verify, best path, document)
1. DETECT — git rev-parse project name
2. COMMIT — commit + push pending dependency changes (with user confirmation)
3. SEARCH — find pending stack-tracker specs
4. RECON — read spec tree, understand scope before acting
5. GATE — quality_gate once for the entire project
6. ANALYZE — grep imports, read consuming files, assess impact per spec
7. COMPLETE — batch-complete safe specs, create fix specs for impacted code
8. FIX — ask user to execute fix specs via /cellm:implement
9. CERTIFY — after all fix specs completed, run Olympus for certification
Before ANY action, inject the mental model:
git rev-parse --show-toplevel last segment = project name. All spec_search, spec_transition, and spec_create_node calls MUST include this project param.
Before any verification, ensure dependency changes are committed:
git status --porcelain — check for uncommitted dependency files (bun.lock, package.json)VERSION + bash scripts/sync-version.sh), commit, pushUses the stack-update-helper CLI for compact output (~200 tokens vs ~19k from MCP):
bun oracle/scripts/stack-update-helper.ts status
Output includes: spec ID, package, version delta, update type, task progress.
For a specific check ID: spec_get_tree(project, path: <id>) directly.
The status output already provides updateType and versionDelta for routing decisions.
For minor/major updates that need deeper analysis (watch items, task structure): use spec_get_tree on that specific spec.
Report scope summary to user: "{N} specs, {M} tasks — {patch: X, minor: Y, major: Z}"
bun oracle/scripts/stack-update-helper.ts gate
Runs npx nuxt typecheck (auto-detects Nuxt) + bun run test from oracle/. Exit code 0 = PASS, 1 = FAIL. Run ONCE for the entire project.
Fallback (if helper unavailable): npx nuxt typecheck + bun run test manually.
bun oracle/scripts/stack-update-helper.ts impact
Shows import analysis per package: file count and locations. Packages with 0 imports are flagged as safe to auto-complete.
For minor/major updates with imports found: Read consuming files, check API usage against watch items. Assess: does the update affect any code paths?
| Gate | updateType | Impact Found | Action |
|------|-----------|-------------|--------|
| PASS | patch | none | bun ... complete --all-pending or complete <ids> |
| PASS | patch | usage found | complete with note — patch is safe |
| PASS | minor | none | bun ... complete <ids> |
| PASS | minor | deprecation/API change | complete verify tasks, create fix spec |
| PASS | major/prerelease | none | complete — no project usage |
| PASS | major/prerelease | API usage | complete verify, create fix spec with affected files |
| FAIL | any | any | analyze errors, create fix spec, delegate to /cellm:implement |
Batch complete via helper:
bun oracle/scripts/stack-update-helper.ts complete --all-pending
# or specific IDs:
bun oracle/scripts/stack-update-helper.ts complete abc123,def456
Auto-chain handles pending→completed in 1 call per task. Auto-rollup completes phases and checks automatically.
Before creating a fix spec, deduplicate:
spec_search(project, query: "{package}", tags: "stack-tracker-fix", state: "pending") — check if a fix spec already exists for this packageWhen impact requires code changes:
spec_create_node({
project: "<project>",
sessionId: "<current-session-id>",
nodeType: "check",
title: "Fix code after {package} {from} -> {to} update",
body: {
context: "{package} updated to {to}. {N} files import this package.",
problem: "API changes in {watch items} affect {affected files}.",
principle: "Update consuming code to match new API. Typecheck must pass."
},
tags: ["stack-tracker-fix", "dependency-fix", "{package}"],
fileRefs: ["{affected files}"],
priority: gate failed ? "high" : "medium"
})
After creating the fix spec, link it to the original update spec:
spec_add_edge({
project: "<project>",
sourceId: "<fix-spec-id>",
targetId: "<update-spec-id>",
edgeType: "related"
})
all)"[n/total] {package} {from} -> {to} ({type}) — {result}"After all update specs are processed, present summary:
/cellm:implement for each fix spec sequentiallyAfter ALL fix specs are executed and completed (pre-certified):
quality_gate({ scope: 'all' }) passes cleanspec_search(project, state: "pending", tags: "stack-tracker") returns 0spec_search(project, state: "pending", tags: "stack-tracker-fix") returns 0/cellm:olympus with target "stack-tracker dependency updates"1. GREP: from '{package}' OR import '{package}' → list consuming files
2. If 0 files: no impact → safe to complete
3. If 1+ files:
a. READ each file (first 100 lines with import context)
b. MATCH: does the file use any API from the watch items?
c. For patch: note usage, complete (patches don't break APIs)
d. For minor: check for deprecated APIs in changelog
e. For major/prerelease: every usage is a potential break point
4. Record findings in transition metadata
| Task title pattern | Gate PASS + No Impact | Gate PASS + Impact | Gate FAIL |
|--------------------|----------------------|-------------------|-----------|
| Verify typecheck and tests pass | auto-complete | auto-complete (gate validates) | create fix spec |
| Review breaking changes | auto-complete (no usage) | analyze + create fix spec if needed | create fix spec |
| Review changelog | auto-complete | auto-complete with impact note | auto-complete |
| Evaluate: {item} | auto-complete | grep for item usage, note result | investigate |
| Update project code | auto-complete (nothing to update) | create fix spec with specific tasks | delegate to implement |
project parambash scripts/sync-version.sh — never manual sedproject, sessionId, specific file paths, and actionsspec_add_edgeproject param on spec_transition and spec_create_node calls/cellm:implementdata-ai
Prose override — temporarily disable quantization and respond in readable prose. Use when relational density matters, for safety-critical explanations, onboarding handoffs, or when token economy is not the priority.
development
Govern explicit weekly Super PRs or maintainer-requested PR merges. Evaluates a 10-criterion readiness checklist and performs governed merge only when a user-requested PR is READY. Never creates or keeps permanent PRs. Use when: 'pr-check', 'pr-merge', 'merge this PR safely', 'is PR ready', 'guard merge', or /sk-git delegates pr-merge.
data-ai
Operational surface for the compress-llm Layer-1 token I/O compressor. Enable, disable, switch mode, and inspect status without editing config files. Use when tuning compression pressure for the current session or project.
tools
Generate structured upstream feedback for the CELLM engineering team. Produces evidence-first Markdown at docs/evidence/<date>-cellm-feedback-*.md for bugs, anti-patterns, deprecation gaps, and harness surprises, with optional atom registration via knowledge_ops. Use when: 'feedback for CELLM', 'send to CELLM team', 'register this as atom', 'document this anti-pattern', 'report this bug upstream'. Trigger proactively on MCP schema/runtime mismatches, mechanical edit loops (>=3 sequential edits), short deprecation windows (<6 weeks), or reusable harness surprises. Do NOT trigger for routine feature work or project-local bugs.