一键导入
compose
Schema Composition - Design the graph topology and generate docgraph.toml for deterministic traversal.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Schema Composition - Design the graph topology and generate docgraph.toml for deterministic traversal.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Semantic Rigidity Gate - Ensure each node has a single unambiguous causal role.
Graph Reasoning - Navigate the documentation graph to progressively refine a hypothesis until a stable conclusion is formed.
Graph Integrity Gate - Ensure nodes and relations can exist in the causal graph.
| name | compose |
| description | Schema Composition - Design the graph topology and generate docgraph.toml for deterministic traversal. |
This skill creates the normative topology of the documentation graph by generating docgraph.toml.
The schema defines what can exist, how it can connect, and what causal traversal means.
[!IMPORTANT] The schema must minimize ambiguity while allowing evolution. Restrict relations by direction and target types to enforce determinism.
compose assumes the documentation graph can be observed and validated. If docgraph is not available, the agent MUST
install it.
The graph system cannot exist without the graph tool.
docgraphmacOS / Linux:
curl -fsSL https://raw.githubusercontent.com/sonesuke/docgraph/main/install.sh | bash
Windows (PowerShell):
powershell -c "irm https://raw.githubusercontent.com/sonesuke/docgraph/main/install.ps1 | iex"
docgraph --version
If the command fails, the agent MUST stop and report environment failure.
The schema must minimize ambiguity while preserving evolution.
Too strict → the graph cannot grow. Too loose → align cannot determine unique meaning.
Every schema decision is a trade-off between these two forces.
The schema is the only place where new semantics are introduced. All other skills only enforce or traverse what the schema defines.
docgraph.toml (the sole normative source)doc/templates/)Before composing, the agent MUST establish:
If these inputs are unavailable, the agent MUST assume defaults and state them explicitly.
Define the reasoning roles required by the project.
Minimum viable set:
| Role | Causal Question | Required |
|---|---|---|
| Intent | Why? | Yes |
| Responsibility | What? | Yes |
| Realization | How? | Yes |
| Evidence | Proven? | No |
| Constraint | Boundary? | No |
| Rationale | Justified? | No |
| Domain | Context? | No |
Intent, Responsibility, and Realization are always required. The others depend on project maturity.
Map concrete node types to roles. The mapping MUST be explicit and complete.
[!NOTE] Node types are schema-specific. The skill must work for any naming scheme.
Every node type MUST belong to exactly one role. If a type spans two roles, the schema is ambiguous.
| Role | Node Types |
|---|---|
| Intent | UC, ACT |
| Responsibility | FR, NFR |
| Realization | MOD, IF, CC |
| Evidence | TEST, METRIC |
| Constraint | CON |
| Rationale | ADR |
| Domain | DAT |
Define a small controlled set of relation types (rel) that correspond to causal questions. rel becomes r.type in
Cypher.
[!IMPORTANT]
relis a controlled vocabulary. Anyrelnot declared here is invalid.
Recommended minimal set:
| Relation | From Role | To Role | Question |
|---|---|---|---|
| refines | Intent | Responsibility | What must be satisfied? |
| realized_by | Responsibility | Realization | How is it achieved? |
| constrained_by | Responsibility | Constraint | What boundaries apply? |
| justified_by | Realization | Rationale | Why this design? |
| verified_by | Realization | Evidence | Is it proven? |
| depends_on | Realization | Realization | What depends on this? |
| defines | Domain | any | What context applies? |
Each relation MUST have a clear causal direction. Bidirectional relations indicate ambiguity.
For each relation type, restrict allowed source and target node types.
This is where determinism is enforced. The narrower the targets, the less align has to guess.
Example constraints in docgraph.toml:
[nodes.FR]
desc = "Functional Requirement"
template = "doc/templates/functional.md"
rules = [{ dir = "to", targets = ["MOD"], min = 1, desc = "Must be realized", rel = "realized_by" }]
Each rule has the following fields:
| Field | Description |
|---|---|
dir | "to" (this node references target) or "from" (target references this node) |
targets | Array of allowed node type IDs, or ["*"] for any type |
min | Minimum required count (0 = optional, 1+ = required) |
desc | Human-readable justification for the rule |
rel | Relation type identifier, snake_case. Used as r.type in Cypher queries |
dir = "from": Declares an inbound expectation. The rule says "this node expects to be referenced by targets".
Use when the target side owns the link in the markdown.
targets = ["*"]: Accepts references from any node type.
[!CAUTION]
"*"disables type-level restriction. If overused,aligncannot determine causal role from relations alone.
[!IMPORTANT]
targets=["*"]is allowed, but it shifts the burden to determinism. When usingtargets=["*"], the schema MUST ensure role determinism using one of:
- the source node type has a unique role by definition, OR
- the
relitself implies a unique causal question independent of target type, OR- an additional rule narrows interpretation (e.g., required inbound/outbound constraints).
targets=["*"])If targets=["*"] is used, the schema MUST state why interpretation remains unambiguous. This justification MUST
reference Role Inventory and Relation Primitives.
Design principles:
Verify that the schema allows valid traversal from Intent to terminal nodes.
The agent MUST check:
If closure fails, the schema has a structural gap.
Each node type in docgraph.toml SHOULD have a template field pointing to a template file.
Templates define the minimal document structure for a node type. They ensure new nodes are created with the correct anchor, required sections, and placeholder links.
Anchor (required, first line):
<a id="{TYPE}_*"></a>
* is replaced with the actual ID suffix when instantiating (e.g., FR_001).
Heading level: Match the document nesting depth.
# {Title} or ## {Title}### {Title}Link placeholder format:
[{TARGET*TYPE}* (\_)](*#{TARGET_TYPE}_*)
{TARGET_TYPE}* → type prefix + wildcard ID (e.g., MOD*)(*) → placeholder display name(*#{TARGET_TYPE}_*) → placeholder anchor referenceRequired sections (min >= 1 rules): Always include. Name the section after the rel value.
Optional sections (min = 0 rules): Include with (Optional) suffix in the heading.
[!NOTE] Template examples below are illustrative. Replace section headings with the
relvalues declared in your schema.
Rich node (has outbound rules): Include link sections per rule.
<a id="{TYPE}_*"></a>
## {Title}
{Description}
### <rel>
- [<TARGET*TYPE>* (\_)](*#<TARGET_TYPE>_*)
### <rel> (Optional)
- [<TARGET*TYPE>* (\_)](*#<TARGET_TYPE>_*)
Leaf node (only inbound from rules, no outbound): Minimal template with no link sections.
<a id="MOD_*"></a>
### {Title}
{Description}
Rationale node (ADR): Domain-specific sections instead of link sections.
<a id="ADR_*"></a>
# {Title}
{Description}
## Decision
{Decision}
## Rationale
{Rationale}
The template field in docgraph.toml:
[nodes.UC]
desc = "Use Case"
template = "doc/templates/usecases.md"
docgraph.tomlEmit the schema. This file becomes the sole normative source for all other skills.
[graph] SectionDefine global graph settings before node definitions. The ignore field excludes paths from graph traversal.
[graph]
ignore = ["README.md", "SECURITY.md", "doc/templates"]
Typical ignore targets:
[nodes.*] SectionsEmit one section per node type, following the Type Mapping and Target Restrictions defined above.
Emit the schema. This file becomes the sole normative source for all other skills.
After generation:
docgraph check to verify the schema and graph loader are consistent.validate on a representative node of each major role.align on at least one node per role boundary (e.g., Intent/Responsibility, Responsibility/Realization).validate and align.Compose does not:
Compose creates the rules. Other skills enforce them.