advance
Use when moving a document to its next status along the type's lifecycle DAG, maintaining links and checking gates at the transition.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use when moving a document to its next status along the type's lifecycle DAG, maintaining links and checking gates at the transition.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
Use when carrying out the work a delivery document describes -- the build loop -- against its task breakdown and acceptance criteria.
Use as the entry point for any work, including reported bugs, defects, and unexpected behaviour. Reads the configured DAG and the user's position, then dispatches the right verb -- advancing within the current document automatically but stopping at type boundaries.
Use when drafting a document of a configured type collaboratively -- AI proposes a draft body, the human edits, iterate -- up to the type's authorship ceiling.
Use when adding a new custom document type to a lazyspec project. Interviews the user to co-author the type's methodology -- intent, authorship, lifecycle, gates, relations -- then writes its enriched template and `[[types]]` config via the config-write CLI. One type per run.
Use when running a criteria-based review (health check, security audit, accessibility review, pen test, bug bash, spec compliance). Creates an Audit document with findings and presents them to the user for triage.
Use when authoring a full document body of a configured type from context -- AI writes the complete body, then asks for review -- only permitted when the type's authorship ceiling is `generated`.
| name | advance |
| description | Use when moving a document to its next status along the type's lifecycle DAG, maintaining links and checking gates at the transition. |
TRAVERSE ONE OUT-EDGE OF THE LIFECYCLE GRAPH
A type's lifecycle is a directed graph: the nodes are its statuses, the edges are the transitions config permits. A document sits on one status. Advance reads the out-edges from that status, picks the successor, confirms the gate on that edge holds, and writes the move. One document, one edge.
Propose only a successor: a status the current one has an out-edge to in `lifecycle.edges`. Read the edge set from config. The binary rejects any pair that is not an edge. Advance writes status only. It never creates a child document, even when the move satisfies a gate that makes a child creatable. - Do NOT write document files directly. Use `lazyspec create` and `lazyspec link`. - Do NOT edit a document you haven't read. Always `lazyspec show --json` or `Read` first. - Do NOT skip the workflow pipeline. Respect the configured `parent_type` chain and `rules`. Documents stored in GitHub Issues (store = "github-issues") are managed through the GitHub API. The `.lazyspec/cache/` directory contains read-only mirrors. - Never edit files under `.lazyspec/cache/`. Use `lazyspec update --body` to modify content. - Always use shorthand IDs (e.g. STORY-095) not cache file paths when referencing documents in `lazyspec link`, `lazyspec update`, `lazyspec show`, etc. - To set body content at creation: `lazyspec create --body "content"`. - To modify after creation: `lazyspec update <ID> --body "new content"`. </GITHUB-ISSUES-DOCUMENTS> Always run lazyspec help <subcommand> before using unfamiliar commands. Always pass--json. Read lifecycle and gate facts from the CLI, never from .lazyspec/ graph files directly. On failure, check --help before retrying.
lazyspec config --json gives the type's lifecycle: its states (the nodes) and edges (the transitions). The edge set decides which moves exist. Every status name comes from config; this skill names none.lazyspec show <id> --json gives the document's current status.lazyspec context --json gives the parent and child statuses a gate may depend on.lifecycle.edges whose from is the current status; their to values are the statuses you can move to. An edge with from: "*" applies from every status, so the default config's * -> superseded is always available.require_parent_status. Read the parent's status from context --json and check the predicate. If it fails, stop and report which status the parent must reach first.lazyspec update <id> --status <next>. The binary rejects any pair that is not an edge, so offer only successors.A gate can make a child of another type creatable once the parent reaches a status. When that happens, advance writes the status move and stops. It does not create the child.
Two conditions separate a move within the lifecycle from crossing into a child type. The gate makes the child creatable; starting it is a second, human step, handled by /lazy's stop-at-boundary rule. Satisfying the gate is necessary, not sufficient.