User Story Writer
deanpeters/Product-Manager-Skills
Writes user stories in Mike Cohn's format with Gherkin acceptance criteria, turning user needs into development-ready work with testable conditions.
Turn a converged devague spec into a buildable plan by working forwards (the spec→plan leg; drives the devague plan CLI group).
$ npx skills add agentculture/culture --skill spec-to-plan -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install agentculture/culture spec-to-plan --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/agentculture/culture.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/spec-to-plan .claude/skills/spec-to-plan && 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 "spec-to-plan" agent skill from https://github.com/agentculture/culture/tree/main/.claude/skills/spec-to-plan into .claude/skills/spec-to-plan/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spec-to-plan", 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/agentculture/culture/tree/main/.claude/skills/spec-to-planType 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 agentculture/culture --skill spec-to-plan -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install agentculture/culture spec-to-plan --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/agentculture/culture.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/spec-to-plan .agents/skills/spec-to-plan && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "spec-to-plan" agent skill from https://github.com/agentculture/culture/tree/main/.claude/skills/spec-to-plan into .agents/skills/spec-to-plan/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spec-to-plan", 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 agentculture/culture --skill spec-to-plan -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install agentculture/culture spec-to-plan --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/agentculture/culture.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/spec-to-plan .cursor/skills/spec-to-plan && 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 "spec-to-plan" agent skill from https://github.com/agentculture/culture/tree/main/.claude/skills/spec-to-plan into .cursor/skills/spec-to-plan/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spec-to-plan", 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/agentculture/culture.git --path .claude/skills/spec-to-plan--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 agentculture/culture --skill spec-to-plan -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install agentculture/culture spec-to-plan --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/agentculture/culture.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/spec-to-plan .gemini/skills/spec-to-plan && 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 "spec-to-plan" agent skill from https://github.com/agentculture/culture/tree/main/.claude/skills/spec-to-plan into .gemini/skills/spec-to-plan/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spec-to-plan", 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 agentculture/culture spec-to-planInstalls 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 agentculture/culture --skill spec-to-plan -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/agentculture/culture.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/spec-to-plan .github/skills/spec-to-plan && 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 "spec-to-plan" agent skill from https://github.com/agentculture/culture/tree/main/.claude/skills/spec-to-plan into .github/skills/spec-to-plan/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spec-to-plan", 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 agentculture/culture --skill spec-to-plan -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install agentculture/culture spec-to-plan --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/agentculture/culture.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/spec-to-plan .opencode/skills/spec-to-plan && 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 "spec-to-plan" agent skill from https://github.com/agentculture/culture/tree/main/.claude/skills/spec-to-plan into .opencode/skills/spec-to-plan/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spec-to-plan", 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.
spec-to-planTurn a converged devague spec into a buildable plan by working forwards (the spec→plan leg; drives the devague plan CLI group).
Spec To Plan is an agent skill from agentculture/culture. Turn a converged devague spec into a buildable plan by working forwards (the spec→plan leg; drives the devague plan CLI group). Seed a plan from a converged frame, add tasks that collectively cover every coverage target (the frame's confirmed claims + honesty conditions), give each task acceptance criteria and an honest dependency order, park genuine unknowns as first-class risks, and export a plan only once it converges. Use when the user says "spec to plan", "stp", "turn this spec into a plan", "plan this…
Its SKILL.md is about 4.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts (for example `scripts/spec-to-plan.sh`).
It sits in Product & Project Management, covering User stories. The repository describes itself as: Culture turns isolated stochastic agents into cooperative, inspectable, improvable artificial colleagues. The licence is Apache-2.0.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 44865d8. 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.
Ships 1 file in scripts/ (Shell), which the agent can run.
Shell commands in SKILL.md call:
bashuvFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
github.comFrom 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.
Spec To Plan loads about 4.7k tokens when it runs. Until then it costs about 204 tokens; SKILL.md has 2,257 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); the scripts in this folder are not scanned.
The full file from agentculture/culture at commit 44865d8, republished under its Apache-2.0 licence (© agentculture). 2,257 words, ~4,683 tokens.
.claude/skills/spec-to-plan/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.The skill is named spec-to-plan; the product/CLI it drives is the
devague plan command group. (The prior leg — turning a vague idea into a
spec — is the sibling /think skill.) It is the forward peer of the
working-backwards spec engine: where /think converges on what to build,
/spec-to-plan converges on how to build it.
A plan is seeded from a converged frame and tracks tasks against the
spec's coverage targets. The CLI is deterministic and move-driven — you
(the agent) choose the next move; the CLI tracks state and tells you what's still
missing. Run devague plan learn for the method and devague plan explain <move> for any single move.
The entry point is scripts/spec-to-plan.sh. Invoke it from the repository you
are speccing (plans persist under .devague/ in the current directory, alongside
the frames they derive from):
bash .claude/skills/spec-to-plan/scripts/spec-to-plan.sh <move> [args...]
bash .claude/skills/spec-to-plan/scripts/spec-to-plan.sh statusIt resolves the CLI portably — an installed devague on PATH (the normal
case), falling back to uv run devague inside the devague checkout, else an
install hint. Every move — including status — is forwarded verbatim as
devague plan <move>, so you can equally call the CLI directly
(devague plan <move> …).
| Move | What it does |
|---|---|
new --frame <slug> | Seed a plan from a converged frame. Derives the coverage targets (c*/h*) the plan must satisfy. Refuses an unconverged frame. |
task "<summary>" | Add a task. --accept "<crit>", --dep <tN>, --covers <c*/h*> (each repeatable), --instruction "<text>" (verbatim working guidance, at creation); --origin llm lands it proposed. |
instruct <tN> "<text>" | Add/update a task's working instruction. Changing it on an already-confirmed task flips it back to proposed — the user re-confirms (the plan side's mirror of the frame side's interrogate --instruction re-confirm rule). |
accept <tN> "<crit>" | Add an acceptance criterion to a task. |
amend <tN> | Edit a task's summary (--summary) and/or replace/remove an acceptance criterion by index. May flip a confirmed task back to proposed; refuses on a rejected task. |
depend <tN> --on <tM> | Record that task tN depends on tM; --remove cuts one edge. Both a self-dependency and an unknown task id are refused at creation with an actionable hint (devague#86) — the same checks task --dep applies. |
cover <tN> --target <c*/h*> | Mark a task as covering a coverage target. Validated against the live source frame, exactly as converge derives it — so a target the frame grew after seeding can be covered straight away (devague#90). |
defer <target-id> --reason "<text>" | Deliberately exclude a coverage target from this plan's gate (--undo reverses it). The honest way to scope a plan to a milestone: deferred targets stop blocking converge and render in the exported plan's Deferred targets section with their reason (devague#85). An out_of_scope risk does not excuse a target — only defer does. |
confirm <tN> [<tN>…] / reject <tN> [<tN>…] | Resolve one or more tasks in one transactional call — all ids valid or nothing changes. User-only decision. Matches the frame engine's multi-id confirm/reject (parity landed for devague#86). |
risk "<text>" --kind <kind> | Record a first-class plan risk (--task <tN> to attach). --resolve <rN> --decision "<text>" closes one out; --amend <rN> --text "<text>" corrects a risk's text in place, preserving its id, kind, task link, and resolution state (devague#84). |
converge | Evaluate the gate against the live source frame; list remaining gaps, plus non-blocking warnings (e.g. a confirmed task with no instruction). Deferred targets are excluded from the gate. |
export | Write the buildable plan to docs/plans/ — only after converge passes. |
deliverables | Read-only "end state" preview: the source frame's confirmed announcement/after-state/success-signal claims, every terminal task with its acceptance criteria, and the surviving open items. Never refuses — useful before convergence too. |
waves | Emit deterministic dependency waves — {plan, waves} plus a top-level tasks object keyed by task id (per-task summary/instruction/acceptance criteria/covers — see The waves --json payload below) — scheduling + subagent-brief metadata only, not orchestration. Read-only, works on an in-progress plan; refuses a cyclic/dangling graph. Devague describes the graph; an operator decides how to run it (#20). |
status | Read-only: where the plan stands + the recommended next move, re-checked against the live frame (--json too). |
show / list | Render a plan / list plans (--json for raw state). |
learn / explain <move> | Teach the method / explain one move. |
Risk kinds (shared with the frame engine): unknown_nonblocking,
unknown_blocking, out_of_scope, follow_up.
status — the next-move verbstatus is a first-class, read-only CLI verb (devague plan status,
internalised from this wrapper in 0.11.0 — issue
#30). It composes
devague plan list + devague plan converge and prints where the current plan
stands, the remaining gaps, and the recommended next move derived from the first
gap. Like converge/export it re-checks the live source frame (so frame
drift surfaces as an error), but it never mutates state. Pass --json for the
structured payload ({plan, total, ready_for_plan, blockers, warnings, parked_items, required_next_moves}).
plan: my-feature (1 plan total)
convergence: NOT passed — 2 gap(s):
- coverage target c5 (boundary) has no confirmed task
- task t2 has no acceptance criteria
recommended next move (first gap):
cover c5: devague plan task "<summary>" --covers c5 --accept "<...>"Run it whenever you're unsure what to do next.
After every successful, non-exempt move (status itself is exempt, since
reporting the next move is already its whole purpose) the CLI also prints a
next: <recommended move> line to stderr. Follow that hint or run
devague plan status — either gets you the same recommended next move.
These are the point of the method — convergence must mean something.
plan new refuses a frame that hasn't
converged. The plan's coverage targets are the spec's confirmed claims and
honesty conditions — there is nothing honest to plan against until the spec
converges.--origin llm lands as
proposed. Never confirm your own proposal. Confirmation is a user-only
decision — surface the proposed task and let the user confirm or reject it.defer instead. If a target is
deliberately out of scope (a later milestone, a separately reviewed change),
do not write a task that merely mentions it so coverage goes green. That
is the exact dishonesty devague#85 was filed about: a task claiming a target it
does not deliver looks perfectly healthy to the gate. Run
devague plan defer <target-id> --reason "<why>" — the target stops blocking
converge and is named, with its reason, in the exported plan's Deferred
targets section, so the exclusion is visible to a reviewer instead of implied
by absence. Deferring is a scoping decision: surface it to the user, don't take
it unilaterally.unknown_blocking risk — it holds back convergence, by design.converge/export re-load the source
frame every time. If the frame was deleted or has regressed below convergence,
they refuse — re-converge the spec (in /think) first.When authoring a plan that will be built via parallel execution (fanned out to
multiple agents via the downstream /assign-to-workforce skill), prefer the
following discipline to maximize parallelism and minimize merge friction:
Two fields now do two distinct jobs on every task (shipped: devague#53 t5):
--accept "<criterion>" (repeatable) — the testable contract: what a
test suite checks to prove the task done. Write each as something a cheaper
model can be validated against test-first: name the files or modules the task
owns, the observable behavior that proves it done, and the compatibility
constraints ("pre-existing plans load with no error"). A criterion a subagent
can't be validated against alone is a summary, not a contract.--instruction "<text>" (at task time) / instruct <tN> "<text>"
(afterwards) — verbatim working guidance carried to the subagent: the
approach to take, which files to touch first, anything the acceptance
criteria don't spell out. Write it yourself; never invent filler to satisfy
the gate. Changing it on an already-confirmed task flips the task back to
proposed — the user re-confirms.devague plan converge warns (non-blocking) when a confirmed task carries no
instruction:
task t1 has no instruction — attach operator guidance with `devague plan instruct t1 "<text>"`Neither field replaces the other: acceptance criteria stay the pass/fail gate;
instruction is what a subagent reads before it starts, quoted verbatim (never
paraphrased) into the brief — see The waves --json payload below.
The exported plan-md must pass markdown lint. The plan's H1 inherits the
frame's title — set a short, period-free --title at devague new time (see
/think's export-hygiene rules). And backtick angle-bracket placeholders in
task text (`instruct <tN>`, not instruct <tN>) — bare ones fail MD033.
There is no task-edit move yet, so fixing text after confirmation means
hand-editing state JSON.
Each task should be small enough for a simpler or cheaper model to build test-first without re-deriving the full design. If a task spans multiple files or architectural layers, split it — narrow scope forces you to write sharp acceptance criteria and keeps waves wide.
Prefer tasks that touch non-overlapping files. When two same-wave tasks modify the same file, merge collision becomes inevitable. The dependency graph alone does not guarantee file disjointness — it only sequences task content dependencies; same-wave tasks with overlapping file-writes must be split across waves or given explicit dependencies.
Check devague plan waves output: if a wave is wide but all tasks touch
src/core.py, the wave is formally parallel but operationally serialized at
merge. Reorder task boundaries so wide waves operate on disjoint file sets.
Every confirmed task must carry at least one acceptance criterion, phrased as a testable condition (not a vague outcome). For example:
Acceptance criteria are the contract between the main agent (who merges) and
the subagent (who builds). A test suite derived from these criteria validates
each task's output before merge, independent of model capability. This is not
optional: devague plan converge warns (non-blocking) when a confirmed task
lacks criteria.
A plan built in parallel must yield identical results to building it serially. This is guaranteed only if:
waves).The TDD gate — tests pass before and after the merge — is the main agent's proof that parallelism didn't break correctness.
waves --json payload — the subagent briefdevague plan waves --json keeps its original shape — {"plan": "<slug>", "waves": [[...], ...]}, the ordered task-id scheduling batches — and adds a
top-level "tasks" object, keyed by task id, carrying each task's brief
verbatim (devague#53 t9, shipping in this same increment):
{
"plan": "<slug>",
"waves": [["t1"], ["t2", "t3"]],
"tasks": {
"t1": {
"summary": "<task summary>",
"instruction": "<verbatim instruction, or \"\" if none>",
"acceptance_criteria": ["<criterion>", "..."],
"covers": ["<c*/h* id>", "..."]
}
}
}This is enough to build a per-subagent brief with no external context —
no need to also fetch plan show --json or the exported plan-md. Quote
instruction and acceptance_criteria verbatim into the brief; don't
paraphrase them.
Once your plan converges, devague plan waves emits the dependency-graph plus
the per-task brief above as scheduling metadata (ordered batches of task
IDs, each with its summary/instruction/acceptance criteria/covers). This feeds
directly into the /assign-to-workforce skill, which:
instruction and
acceptance_criteria verbatim from the payload above.Plan for workforce execution early: narrow task scope, write crisp acceptance criteria, attach a working instruction, and strive for wide waves with disjoint files.
Results go to stdout, diagnostics and errors to stderr — a strict split
you can rely on when parsing. Pass --json to any move for a structured payload.
Exit code 0 on success, non-zero on user error (with a hint: line). Plans
live under .devague/plans/ in the current directory; the exported plan-md lands
in docs/plans/.
Picking up after /think exported a spec for the frame my-feature:
p() { bash .claude/skills/spec-to-plan/scripts/spec-to-plan.sh "$@"; }
p new --frame my-feature # seeds the plan + its coverage targets
p show # see the c*/h* targets you must cover
p task "Build the core engine" --accept "engine has a convergence gate" \
--covers c1 --covers c3 --instruction "implement in devague/frame.py; see docs/spec-contract.md for the schema"
p task "Pressure-test honesty conditions" --dep t1 --covers h1 --covers h2 \
--accept "every honesty condition maps to a test"
# Add/refine an instruction after the fact — changing it on a confirmed task
# flips the task back to 'proposed' (the user re-confirms):
p instruct t2 "write tests/test_honesty.py covering each honesty condition"
# Park a genuine unknown instead of guessing:
p risk "exact rollout sequencing" --kind unknown_nonblocking
p status # what's left + the next move
p converge # gate; resolve any listed gaps (warnings never block export)
p export # writes docs/plans/my-feature.md once converged
p waves --json # scheduling metadata + the per-task subagent briefThe exported plan-md is a buildable artifact: topologically ordered tasks, each
with acceptance criteria and the spec targets it covers. It feeds directly into
implementation (or superpowers:writing-plans).
Once converge passes and export writes the plan-md, this leg is done.
devague plan waves --json emits the dependency-graph plus the per-task brief
(see above) as scheduling metadata — the single source the /assign-to-workforce
skill needs to fan the plan's waves out to parallel subagents, get the human's
go/no-go on the implementation split plan, and TDD-gate each merge. Continue
with /assign-to-workforce next; if a fan-out mid-run needs to diverge from
this plan, that is /deviate's job, not a silent edit here.
Previous leg: challenge
Next leg: assign-to-workforceThis is a first-party skill — its origin is agentculture/devague, where the
devague agent maintains it alongside the tool it operates (dogfooding), next to
its sibling /think. It is the inverse of the other skills under
.claude/skills/, which devague vendors from guildmaster. guildmaster
pulls it from devague and broadcasts it to the rest of the AgentCulture mesh.
The cite, don't import policy still holds: downstream repos copy it, they don't
symlink or depend on it. See docs/skill-sources.md.
© agentculture, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (scripts) in .claude/skills/spec-to-plan of agentculture/culture.
Open the folder on GitHubat commit 44865d8
Spec To Plan 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 |
|---|---|---|---|---|---|---|
| Spec To Plan this skillagentculture/culture | 115 | — | ~4.7k | Automated safety check: Pass | Apache-2.0 | |
| User Story Writerdeanpeters/Product-Manager-Skills | 7.2k | 2 repos | ~2.9k | Automated safety check: Pass | Custom licence | |
| Ralph Tui Create Beadssubsy/ralph-tui | 2.5k | 1 repos | ~2.6k | Automated safety check: Pass | MIT | |
| Agile Product Owneralirezarezvani/claude-skills | 28k | 3 repos | ~3.2k | Automated safety check: Pass | MIT | |
| Ralph Tui Create Beads Rustsubsy/ralph-tui | 2.5k | 1 repos | ~2.8k | Automated safety check: Pass | MIT | |
| To Specbestofjs/bestofjs | 3.1k | 21 repos | ~757 | Automated safety check: Pass | MIT |
deanpeters/Product-Manager-Skills
Writes user stories in Mike Cohn's format with Gherkin acceptance criteria, turning user needs into development-ready work with testable conditions.
subsy/ralph-tui
Convert PRDs to beads for ralph-tui execution. An agent skill from subsy/ralph-tui.
alirezarezvani/claude-skills
Writes INVEST-checked user stories with acceptance criteria, splits epics, plans sprints from velocity and ranks the backlog with a weighted score.
subsy/ralph-tui
Convert PRDs to beads for ralph-tui execution using beads-rust (br CLI).
bestofjs/bestofjs
Turn the current conversation into a spec and publish it to the project issue tracker — no interview, just synthesis of what you've already discussed.
subsy/ralph-tui
Convert PRDs to prd.json format for ralph-tui execution. An agent skill from subsy/ralph-tui.
agentculture/culture
Show a Culture agent's full configuration in one read-only view: its system-prompt file (CLAUDE.md / AGENTS.md / GEMINI.md), the parallel culture.yaml, and the agent's local .claude/skills index.
agentculture/culture
CI/CD lane for culture: branch, commit, push, create PR, wait for automated reviewers, fetch comments, fix or pushback, reply, resolve threads.
agentculture/culture
All agent communication from culture: in-mesh chat (channels, DMs, mentions, knowledge sharing) via culture channel CLI, AND cross-repo hand-off briefs to sibling-repo agents (agentirc, steward…
agentculture/culture
Cross-repo + mesh communication: file tracked GitHub issues on sibling repos, comment on existing issues, fetch issues with body + comments to inline current state into briefs, and send live…
agentculture/culture
Switch a PyPI package install between the production index, TestPyPI pre-release builds, and a local editable checkout.
agentculture/culture
Run pytest with parallel execution and coverage. An agent skill from agentculture/culture.
Categories
Turn a converged devague spec into a buildable plan by working forwards (the spec→plan leg; drives the devague plan CLI group). Spec To Plan is an agent skill from agentculture/culture. Turn a converged devague spec into a buildable plan by working forwards (the spec→plan leg; drives the devague plan CLI group).
Spec To Plan fits situations like: the user says spec to plan; turn this spec into a plan; make a build plan; after the /think skill exports a spec.
Run `npx skills add agentculture/culture --skill spec-to-plan -a claude-code`. Or copy the skill folder (.claude/skills/spec-to-plan in agentculture/culture) into .claude/skills/spec-to-plan in your project. Claude Code loads it when a task matches its description.
Run `npx skills add agentculture/culture --skill spec-to-plan -a codex`. Or copy the skill folder (.claude/skills/spec-to-plan in agentculture/culture) into .agents/skills/spec-to-plan 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 agentculture/culture --skill spec-to-plan -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/spec-to-plan, .gemini/skills/spec-to-plan, .github/skills/spec-to-plan and .opencode/skills/spec-to-plan in your project.
Going by SKILL.md and its folder, Spec To Plan needs a shell for the scripts in its folder and the command-line tools its instructions call (bash and uv). Our summary lists: A Bash shell.
SKILL.md names 1 domain. As links in the text: github.com. 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Spec To Plan is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.7k 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 Spec To Plan: User Story Writer (deanpeters/Product-Manager-Skills, 7.2k stars), Ralph Tui Create Beads (subsy/ralph-tui, 2.5k stars), Agile Product Owner (alirezarezvani/claude-skills, 28k stars) and Ralph Tui Create Beads Rust (subsy/ralph-tui, 2.5k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
agentculture (a GitHub organization) maintains it in agentculture/culture, which has 115 GitHub stars. The repository holds 19 skills in this directory. The repository was last updated on October 10, 2026.
Source: agentculture/culture on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.