Spec Writer
garrytan/gstack
Converts a vague idea into a precise, executable spec in five phases, files it as an issue and can start an agent on it in a fresh worktree.
Bring the product specification set under docs/specs/ (SPEC.md, requirements.md, scenarios.md, scenariocoverage.md) up to date with the code that has merged to origin/main since the specs were last…
$ npx skills add imbue-ai/sculptor --skill update-specs -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install imbue-ai/sculptor update-specs --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/imbue-ai/sculptor.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/update-specs .claude/skills/update-specs && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "update-specs" agent skill from https://github.com/imbue-ai/sculptor/tree/main/.claude/skills/update-specs into .claude/skills/update-specs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "update-specs", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/imbue-ai/sculptor/tree/main/.claude/skills/update-specsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add imbue-ai/sculptor --skill update-specs -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install imbue-ai/sculptor update-specs --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/imbue-ai/sculptor.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/update-specs .agents/skills/update-specs && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "update-specs" agent skill from https://github.com/imbue-ai/sculptor/tree/main/.claude/skills/update-specs into .agents/skills/update-specs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "update-specs", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add imbue-ai/sculptor --skill update-specs -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install imbue-ai/sculptor update-specs --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/imbue-ai/sculptor.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/update-specs .cursor/skills/update-specs && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "update-specs" agent skill from https://github.com/imbue-ai/sculptor/tree/main/.claude/skills/update-specs into .cursor/skills/update-specs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "update-specs", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/imbue-ai/sculptor.git --path .claude/skills/update-specs--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add imbue-ai/sculptor --skill update-specs -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install imbue-ai/sculptor update-specs --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/imbue-ai/sculptor.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/update-specs .gemini/skills/update-specs && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "update-specs" agent skill from https://github.com/imbue-ai/sculptor/tree/main/.claude/skills/update-specs into .gemini/skills/update-specs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "update-specs", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install imbue-ai/sculptor update-specsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add imbue-ai/sculptor --skill update-specs -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/imbue-ai/sculptor.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/update-specs .github/skills/update-specs && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "update-specs" agent skill from https://github.com/imbue-ai/sculptor/tree/main/.claude/skills/update-specs into .github/skills/update-specs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "update-specs", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add imbue-ai/sculptor --skill update-specs -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install imbue-ai/sculptor update-specs --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/imbue-ai/sculptor.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/update-specs .opencode/skills/update-specs && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "update-specs" agent skill from https://github.com/imbue-ai/sculptor/tree/main/.claude/skills/update-specs into .opencode/skills/update-specs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "update-specs", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
update-specsBring the product specification set under docs/specs/ (SPEC.md, requirements.md, scenarios.md, scenariocoverage.md) up to date with the code that has merged to origin/main since the specs were last…
Update Specs is an agent skill from imbue-ai/sculptor. Bring the product specification set under docs/specs/ (SPEC.md, requirements.md, scenarios.md, scenariocoverage.md) up to date with the code that has merged to origin/main since the specs were last refreshed. Reviews the merged PRs since a recorded baseline, filters out non-product churn, and applies the needed edits to each doc — preserving its format and ID scheme — then verifies every existing claim in the docs is still true of the current code. Use periodically to keep the specs from going stale, or when…
Its SKILL.md is about 4.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
The repository describes itself as: Build product with grounded, parallel coding agents. The licence is MIT.
9 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit f847102. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gittsxshFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Update Specs loads about 4.6k tokens when it runs. Until then it costs about 145 tokens; SKILL.md has 2,426 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from imbue-ai/sculptor at commit f847102, republished under its MIT licence (© imbue-ai). 2,426 words, ~4,628 tokens.
.claude/skills/update-specs/SKILL.md (or your agent's skills folder).Reconcile the spec set under docs/specs/ with everything merged to origin/main since the specs
were last refreshed. The job has two halves: (1) review the new commits, decide what changed about
the product, and edit the docs to match (Steps 2–6), and (2) confirm every claim already in the
docs is still true of the current code (Step 7) — because a standing claim can rot from a change the
commit review correctly skips as noise (a deletion, a rename, a moved default). Do not invent behavior,
and do not document implementation detail the product docs deliberately omit.
docs/specs/ holds four long-lived, related documents. Read docs/specs/README.md first — it is the
authority on how they relate. In brief:
| Doc | What it captures | When a change touches it |
|---|---|---|
SPEC.md | The narrative product spec: what Sculptor is and how each feature behaves, in prose. | A new/changed user-facing capability or behavior. |
requirements.md | The measurable & contractual facts the prose omits: numeric targets, version/platform bars, persistence/migration guarantees, integration contracts, open questions. (This is the "architecture/requirements" doc — there is no separate architecture.md.) | A change that sets or moves a number, a version floor, a contract, or a guarantee. |
scenarios.md | Every user-facing interaction as a Given/When/Then scenario with a stable AREA-NNN ID. | A change to what happens on screen for any interaction. |
scenario_coverage.md | Maps each scenario to the integration test that demonstrates it (Complete / Partial / Missing). | Any scenario you add, change, or remove — and any new/changed test that moves a scenario's status. |
Discover the docs dynamically (ls docs/specs/*.md) rather than hard-coding the list, so the skill
still works if a doc is added or renamed. Apply the per-doc guidance above by matching the doc's role,
not its exact filename.
The baseline is the commit the specs were last reconciled against. Everything after it is unreviewed.
$ARGUMENTS, use that.docs/specs/.spec-baseline — a file holding the baseline SHA on its first line. Use that SHA.head -1 docs/specs/.spec-baselineIf the file is missing, stop and tell the user — the baseline must be seeded first (write the last
reconciliation commit's SHA to docs/specs/.spec-baseline). Don't guess a baseline.
Then fetch and confirm where the baseline sits relative to the current tip:
git fetch origin --quiet
git rev-parse origin/main
git merge-base --is-ancestor <baseline> origin/main && echo "baseline on main" || echo "WARN: baseline not on main"
git rev-list --count <baseline>..origin/mainIf the baseline is not an ancestor of origin/main, stop and ask the user how to proceed (it may be on
a feature branch or have been rebased away). Reconcile against origin/main, not the local HEAD,
unless the user says otherwise.
This repo merges with no-fast-forward, so every PR is one merge commit on the first-parent spine. Use the merge commits as the source of truth for what landed, and the non-merge subjects for detail.
# Source of truth — one line per merged PR:
git log <baseline>..origin/main --merges --first-parent --format='%h %s'
# Detail — individual commit subjects, for understanding each PR:
git log <baseline>..origin/main --no-merges --format='%s'If the lists are large, write them to the scratchpad and read them with the Read tool rather than scrolling shell output.
Most commits do not change the product and must not trigger spec edits — but classify from the diff, not the subject. A subject and branch name describe intent ("cleanup", "flake fix", "build"); the spec cares about effect, and the two diverge exactly where it matters: a "cleanup" PR that removes a documented feature, a "flake fix" that changes behavior. So before you can call a PR noise, look at what files it touched — this is cheap:
# File list per PR — the real classification signal. Read this, not just the subject.
git show --stat <merge-sha>
# Or stat the whole range at once, one block per PR:
git log <baseline>..origin/main --first-parent --stat --format='### %h %s'Three hard escalation triggers. A PR hitting any of these gets its diff read no matter how its subject reads — it cannot be dismissed as noise on the subject alone:
git log <baseline>..origin/main --diff-filter=D,R --name-status). A removal is the change most
likely to be both filed as noise and to invalidate a standing doc claim — grep the docs for the
removed path/symbol before letting it pass. (This is the class that kept a deleted helper script in
the docs for multiple runs.)frontend/src/pages/** or frontend/src/components/**,
a web route handler, config/user_config.py (settings/defaults), a */registry.py, a sculpt CLI
command file, a keybindings map, or onboarding / add-repo / dependency-card code — regardless of
subject.Genuine noise — skip only when the diff confirms it, never on the subject:
*_test.py, test_*.py,
*.test.ts(x), fixtures). (Exception: a test-only PR can still move a scenario_coverage.md status
— see Step 6.)For everything not cleanly noise, apply the inclusion test from the spec's scope discipline:
Would a user see, name, or configure this? If yes, it likely belongs in the product docs.
New capabilities, new settings, new panels/screens, changed defaults, changed keybindings, new CLI flags, changed error/reliability behavior a user would notice, and removed features all qualify.
Keep implementation detail OUT of the product docs. Internal services, the task/Environment
substrate, WebSocket/HTTP transport, Alembic/DB migrations, schema regen, and similar plumbing are
impl-only — they belong (if anywhere) in requirements.md as a contract, never as product narrative.
The signal-to-noise ratio is typically ~10:1 (≈15 product features out of ≈80 PRs). Treat that as an observation to sanity-check against, not a quota to prune toward — classify each PR by its effect and let the count land where it lands. A list far larger than that means impl detail is probably leaking in; far smaller means you're likely trusting subjects over diffs. When a call is genuinely uncertain, bias toward reading the diff, not toward skipping.
Branch names embed ticket IDs (scu-NNNN) and squashed subjects are descriptive, but do not write
spec text from the subject line alone — it describes the fix, not the resulting behavior. Step 3
already gave you each PR's file list; now read the real change for everything you kept (and for any
escalation-trigger PR you're still unsure about):
git log <merge-sha>^1..<merge-sha>^2 --format='%s' # the PR's own commits
git diff <merge-sha>^1..<merge-sha> -- <relevant paths> # the real change → the resulting behaviorGroup related PRs into one feature before editing (e.g. a dozen plugin-system PRs are one new product surface, not a dozen edits). Decide, per feature, the current user-visible behavior — what the product does now, on main — because that is what the spec must describe.
For each feature, decide which docs are affected and what each edit is. This is mostly a straight translation from "what the commits changed" to "what the product now does" — don't check in with the user for routine edits. Make the changes and let the user review the diff at the end (Step 9).
Only pause to ask the user when there is genuine ambiguity you cannot resolve from the code and docs — e.g. a default changed but you can't tell which value is now authoritative, or it's unclear whether a feature is shipped vs. gated behind an experimental flag and the code doesn't say. Resolve everything you can on your own first (read the code, read the surrounding doc); ask only about what's truly left over, and batch those questions rather than interrupting per-feature.
Edit each doc in place, matching its established format, tone, and structure. Read enough surrounding context in each doc to slot the change in where it belongs, not at the end.
Describe what the code does today — never what it used to do. These are living descriptions of the current product, not a changelog. Don't leave a trace of the change: no "now …", "no longer …", "previously …", "used to …", "formerly …", "renamed from …", "instead of …", or any before/after phrasing. The commit history already records what changed; the doc records what is. When you revise a section, rewrite it so a reader with no knowledge of the old behavior gets an accurate, self-contained description — then delete any wording that only makes sense relative to the past.
SPEC.md — prose behavior. Add to or revise the relevant feature section; remove text for
removed features. Keep the descriptive, present-tense product voice. Experimental/off-by-default
features go in the experimental section, marked as such.requirements.md — only when the change sets or moves a measurable target, version/platform
bar, persistence/migration guarantee, integration contract, or resolves an open question. Don't
restate prose here; record the fact.scenarios.md — Given/When/Then with a stable AREA-NNN ID. Preserve the ID scheme: reuse
the right area prefix (see its "Areas / ID prefixes" table), and assign the next free number in
that area — never renumber existing scenarios. Every Then must be visible on screen. Delete
scenarios for removed behavior; revise in place for changed behavior.scenario_coverage.md — for every scenario you added/changed/removed, add/update/remove its
coverage row, set status (Complete / Partial / Missing) by checking whether an integration test
actually drives the action and asserts the visible outcome, and update the per-area counts in the
executive summary table so the totals stay consistent. A test-only PR that newly covers an
existing scenario can move a status here even though no other doc changes.Public-visibility rule: these docs are world-readable. Scrub PII, internal hostnames/service names, customer data, and security-sensitive detail, per CLAUDE.md's "Public Visibility" section.
Steps 2–6 are changelog-driven: they translate the new commits into edits. That has a structural
blind spot — a claim already in the docs can be silently invalidated by a change you correctly
filtered out as noise in Step 3 (most often a deletion or rename buried in a "cleanup" / "build"
PR). The changelog will never surface it, because as a commit it isn't a product change; only its
effect on a standing claim is. (This is exactly how a deleted helper script lived on in
requirements.md for multiple runs.)
So this step ignores the commit history entirely. It treats the docs as a set of standing assertions and confirms each one is true of the code as it is right now. It is not scoped by the baseline and not limited to the sections you edited — a claim you didn't touch this run is exactly where rot hides. Every factual statement in all four docs is a claim to confirm true.
Claim categories, and how to verify each:
# Pull backtick-quoted paths/symbols from the prose docs; report any with no match in the tree.
for d in docs/specs/SPEC.md docs/specs/requirements.md; do grep -oE '`[^`]+`' "$d"; done \
| tr -d '`' \
| grep -oE '[A-Za-z0-9_./-]+\.(py|ts|tsx|toml|json|sh|plist)|[A-Za-z_][A-Za-z0-9_]{4,}' \
| sort -u > /tmp/spec-refs.txt
while read -r r; do
git grep -qI -- "$r" -- sculptor tools 2>/dev/null || ls "$r" >/dev/null 2>&1 || echo "UNVERIFIED: $r"
done < /tmp/spec-refs.txt~/.sculptor/internal/…) and doc-internal IDs (AREA-NNN,
REQ-…, SECURITY.md) are false positives; a real code path/symbol that's gone is a stale claim.managed_tools.py, a size limit in the *Utils.ts constant, a default in
user_config.py, a button's literal text in its component. A doc that pins 20 MB must equal the
constant.Make it tractable by fanning out. You cannot deeply re-derive ~4700 lines of claims inline. Slice
the doc set into coherent units (by SPEC subsection, requirements section, and scenario area) and
dispatch a read-only agent per slice (the Explore agent fits) — in parallel. Hand each agent its
slice verbatim and require it to return, per claim, only a verdict:
file:line that proves it,Bias the agents toward skepticism: confirmed requires finding the code and seeing it match, not that the claim merely sounds plausible. Don't let an agent infer behavior from the doc itself.
Act on the verdicts:
Cross-check that the docs still agree with each other:
scenarios.md ID has a matching scenario_coverage.md row, and the per-area and
total summary counts add up (sum the area rows; they must equal the totals).SPEC.md is referenced consistently wherever else it's mentioned (CLI table,
settings list, experimental section, etc.) — grep the doc for the feature's name.Then update the baseline pointer so the next run's changelog review starts here:
git rev-parse origin/main > docs/specs/.spec-baselineLeave the working tree dirty for the user to review — do not commit or push (matching the other
doc-update skills). Summarize what you changed: the baseline range reviewed (<baseline>..<tip>, with
counts), the features that drove edits, the docs touched, the new baseline SHA recorded, and anything
you intentionally skipped. Report the claim-verification pass (Step 7) separately: roughly how many
claims you checked, every refuted claim you fixed (with what was wrong), and every uncertain
claim you could not confirm — the user needs the uncertains called out explicitly, not buried.
.spec-baseline scopes the changelog review (Steps 2–6) so each run only re-reads new
commits. It does not scope the claim-verification pass (Step 7) — that re-confirms the whole
doc set every run, on purpose. Don't "optimize" Step 7 down to only the touched sections or the
baseline range; the rot it catches (a claim invalidated by a filtered-out deletion) is invisible to
the changelog by definition. If cost is a concern, parallelize the fan-out — don't shrink the scope.© imbue-ai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/update-specs of imbue-ai/sculptor.
Open the folder on GitHubat commit f847102
Update Specs next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Update Specs this skillimbue-ai/sculptor | 237 | — | ~4.6k | Automated safety check: Pass | MIT | |
| Spec Writergarrytan/gstack | 136k | — | ~14k | Automated safety check: Notes | MIT | |
| Spec Driven Workflowalirezarezvani/claude-skills | 28k | — | ~3.9k | Automated safety check: Pass | MIT | |
| Sparc Specruvnet/ruflo | 74k | — | ~1.1k | Automated safety check: Notes | MIT | |
| Agent Specificationruvnet/ruflo | 74k | 2 repos | ~1.8k | Automated safety check: Pass | MIT | |
| Specgarden-co/classic-jazz | 2.5k | — | ~1.3k | Automated safety check: Pass | MIT |
garrytan/gstack
Converts a vague idea into a precise, executable spec in five phases, files it as an issue and can start an agent on it in a fresh worktree.
alirezarezvani/claude-skills
A skill your agent uses when the user asks to write specs before code, define acceptance criteria, plan features before implementation, generate tests from specifications, or follow spec-first…
ruvnet/ruflo
Run the SPARC Specification phase — gather requirements, define acceptance criteria, identify constraints, and store the spec in memory
ruvnet/ruflo
Agent skill for specification - invoke with $agent-specification
garden-co/classic-jazz
Implement features using Spec Driven Development (SDD) workflow.
addyosmani/agent-skills
Writes a structured specification before any code, moving through gated specify, plan, tasks and implement phases, with an optional capability map for multi-part requests.
imbue-ai/sculptor
QA the Sculptor mobile web UI on a real iOS Simulator, driven headlessly from a Mac.
imbue-ai/sculptor
Compare React component render counts between origin/main and the current branch during a user-defined UI scenario (e.g.
imbue-ai/sculptor
Post a one-line PR announcement to a Slack channel, and mark it :merged: when the PR merges.
imbue-ai/sculptor
Run Claude programmatically against collections of files in the codebase.
imbue-ai/sculptor
Build or modify a Sculptor extension — a runtime ESM module loaded into the Sculptor UI.
imbue-ai/sculptor
Review a set of code changes against Sculptor's review categories and produce a markdown findings table.
Bring the product specification set under docs/specs/ (SPEC.md, requirements.md, scenarios.md, scenariocoverage.md) up to date with the code that has merged to origin/main since the specs were last…. Update Specs is an agent skill from imbue-ai/sculptor.md) up to date with the code that has merged to origin/main since the specs were last refreshed.
Run `npx skills add imbue-ai/sculptor --skill update-specs -a claude-code`. Or copy the skill folder (.claude/skills/update-specs in imbue-ai/sculptor) into .claude/skills/update-specs in your project. Claude Code loads it when a task matches its description.
Run `npx skills add imbue-ai/sculptor --skill update-specs -a codex`. Or copy the skill folder (.claude/skills/update-specs in imbue-ai/sculptor) into .agents/skills/update-specs in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add imbue-ai/sculptor --skill update-specs -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/update-specs, .gemini/skills/update-specs, .github/skills/update-specs and .opencode/skills/update-specs in your project.
Going by SKILL.md and its folder, Update Specs needs the command-line tools its instructions call (git, tsx and sh).
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Update Specs is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.6k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Update Specs: Spec Writer (garrytan/gstack, 136k stars), Spec Driven Workflow (alirezarezvani/claude-skills, 28k stars), Sparc Spec (ruvnet/ruflo, 74k stars) and Agent Specification (ruvnet/ruflo, 74k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
imbue-ai (a GitHub organization) maintains it in imbue-ai/sculptor, which has 237 GitHub stars. The repository holds 29 skills in this directory. The repository was last updated on October 8, 2026.
Source: imbue-ai/sculptor on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.