sdd4j
Skill10 starsChanged 4 months agoMITView on GitHub
Spec-Driven Development for Java workflow using package-info.java as the co-located capability contract. Use when the user asks for SDD4J, spec-driven Java development, package-info.java specs, EARS requirements, traceable requirement tests, or wants to set up, create, apply, verify, or converge a capability spec across architectures such as sdd4j-package-by-feature, sdd4j-package-by-layer, or sdd4j-bce.
In this repository17 other files it gives its agents.
- AGENTS.mdAGENTS.md
- conventional-commitSkill
- diagramsSkill
- drawioSkill
- java-conventionsSkill
- java-distillerSkill
- mermaidSkill
- microprofile-serverSkill
- migrate-to-bceSkill
- quarkus-jnosqlSkill
- sdd4j-bceSkill
- sdd4j-ears-testsSkill
- sdd4j-hexagonalSkill
- sdd4j-package-by-featureSkill
- sdd4j-package-by-layerSkill
- slddSkill
- spring-boot-serverSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
43 rules. About 0 are common, 28 are distinctive, and 15 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈28
Distinctive · estimate
This author's own choices. Worth a look.
15
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 15
Use SDD4J as:
- Distinctive: line 24
If the user clearly asks for this workflow without slash syntax, infer the matching mode.
- Very specific: line 80
If the adapter cannot answer confidently, run setup or ask one specific question.
- Very specific: line 86
Prefer a project-local ## SDD4J section in AGENTS.md when the project does not follow an adapter's defaults exactly.
- Distinctive: line 88
Use this shape and keep it concise:
- Very specific: line 127
Before authoring, extending, applying, or verifying a capability spec, read the project-local AGENTS.md ## SDD4J section and resolve Spec …
- Distinctive: line 142
Never duplicate a SDD4J capability's one-liner — a hand-typed SDD4J capability index drifts.
- Distinctive: line 171
Ask the stack skill "are you green?" — never name a runner or test kind, and never self-certify convergence.
- Very specific: line 184
Use setup to configure SDD4J for an existing Java project before creating specs.
- Distinctive: line 191
If multiple layouts appear, treat that as exceptional.
- Distinctive: line 194
Ask for confirmation before writing or replacing that section.
- Distinctive: line 195
Write only the project mapping.
- Distinctive: line 197
When confidence is low, ask one concrete question at a time.
- Very specific: line 201
Use new to declare a capability spec from a precise capability name, a natural-language feature description, or a README seed when no …
- Distinctive: line 206
Never assume silently. If leaning on a default, name it and ask for confirmation.
- Distinctive: line 207
Ask one concrete ambiguity per question.
- Distinctive: line 209
Stop only when another engineer could author the same spec from the user's words.
- Very specific: line 216
If package-info.java exists, do not overwrite it without explicit user confirmation.
- Very specific: line 218
Read references/capability-spec-template.md and author the package spec from it in the resolved spec language.
- Very specific: line 219
Use the architecture adapter only to locate the capability package and validate its naming.
- Distinctive: line 226
Ask the user to confirm the decomposition before writing.
- Distinctive: line 228
If decomposition introduces cross-capability wiring, shared language, or system invariants, propose a system doc update and ask before …
- Very specific: line 232
Read only hand-written prose outside sdd4j:generated markers.
- Distinctive: line 233
Treat it as a feature description and run the feature-description workflow.
- Distinctive: line 235
Leave the seed prose human-owned.
- Very specific: line 239
Use apply to converge code and tests to an existing capability spec.
- Distinctive: line 246
Run the stack verification loop before editing when feasible.
- Distinctive: line 247
Read the structural gap both ways.
- Distinctive: line 249
If verification is green and no structural or semantic gap or drift exists, stop and report already converged.
- Distinctive: line 252
Write the correct implementation to pass the new tests.
- Distinctive: line 256
Stop when verification is green and no structural or semantic gap or drift remains.
- Very specific: line 260
Use verify to check conformance without intentionally implementing missing behavior.
- Distinctive: line 280
Verify that the implementation and the test honor the same contract value, not only the same code path or exception type.
- Distinctive: line 282
If a default, constant, or fallback value differs from the spec, report it as semantic drift and do not treat the build as proof of …
- Very specific: line 294
Use mandatory requirement wording for every requirement.
- Distinctive: line 295
Use stable ids and never reuse retired ids.
- Distinctive: line 296
Keep statements behavioral and verifiable.
- Distinctive: line 297
Keep framework details, URLs, HTTP verbs, database tables, and implementation choices out of requirements unless the stack contract itself …
- Very specific: line 298
Use EARS as semantic patterns, not English-only keywords.
- Very specific: line 299
Every boundary op traces to a group Rn.
- Very specific: line 300
Every statement Rn.m traces to at least one executable test or case whose runner-visible identity resolves to its exact id.
- Distinctive: line 348
Test tracing an id no statement carries.
- Distinctive: line 351
Never edit the spec merely to absorb drift.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Skill: SDD4J
Objective
Drive Spec-Driven Development for Java without owning the project's architecture. SDD4J owns the workflow, the spec format, and traceability. The composed architecture skill owns how a capability maps to code. The composed stack skill owns Java idioms, build, run, and test verification.
Use SDD4J as:
/sdd4j setup
/sdd4j new <capability-or-feature>
/sdd4j apply <capability-or-feature>
/sdd4j verify <capability-or-feature>If the user clearly asks for this workflow without slash syntax, infer the matching mode.
Core Invariants
- The spec is the capability contract: what the Java package promises, not how it is implemented.
- The spec lives in
package-info.javausing Markdown doc comments (JEP 467) - each line prefixed///, ending with thepackage …;declaration; if the project does not support it, then use conventional Javadoc, ending with thepackage …declaration; - One capability spec maps to one architecture-defined component, feature, package, module, or business component.
- One spec per capability is the single source of truth. Never create parallel specs for one capability.
- A project should have one primary SDD4J architecture adapter. Multiple adapters in one repository are exceptional and must be declared explicitly per module, package root, or capability set in
AGENTS.md. - The task list is the current gap between spec, code, and tests. Read it on demand; do not maintain a separate task file.
## Requirementsuses EARS statements with stable ids such asR1.1.- Every requirement id must be represented by at least one executable test or case whose runner-visible identity resolves to the exact
Rn.mid according to the stack or project trace convention. The trace may use the literal id or a symbol whose display form is the literal id. JavaDoc or comments alone do not count as traceability. - Done means the stack verification is green, no structural gap or drift remains, and traced tests and implementation semantically conform to every requirement.
- SDD4J does not prescribe
boundary/control/entity,controller/service/repository, or any other layout. - SDD4J must obey stronger invariants imposed by the selected architecture adapter. Do not weaken an adapter's contract to make an existing project fit silently.
Composition Model
Resolve three roles before writing or applying code:
SDD4J workflow
spec format, setup/new/apply/verify, EARS, traceability, gap loop
Architecture adapter
package layout, capability location, operation mapping, entity/model mapping, drift rules
Stack skill
Java framework conventions, build tool, test command, runtime verificationExamples:
sdd4j + sdd4j-package-by-feature + spring-boot-server
sdd4j + sdd4j-package-by-layer + spring-boot-server
sdd4j + sdd4j-hexagonal + spring-boot-server
sdd4j + sdd4j-package-by-feature + microprofile-server
sdd4j + sdd4j-bce + java-cli-appArchitecture Adapter Contract
The architecture skill or the project's AGENTS.md must answer these questions:
- What is the project's primary SDD4J architecture adapter?
- Are there any explicitly declared exceptions by module, package root, or capability set?
- Where is the source root?
- Where does a capability's
package-info.javalive? - How does a capability name map to packages and classes?
- How do
## Boundaryoperations map to entrypoints or application operations? - How do
## Entitiesentries map to domain, model, entity, aggregate, DTO, or persistence classes? - Which implementation areas are intentionally not part of the spec?
- How is structural drift detected in both directions?
- How do tests expose requirement ids?
If the adapter cannot answer confidently, run setup or ask one specific question. Do not infer a complex architecture silently.
Treat architecture as a project-level decision, not a per-capability preference. Use one primary adapter for the project or module. If a repository genuinely mixes architectures, AGENTS.md must declare the routing rule before SDD4J writes, applies, or verifies affected capabilities. Never mix adapters inside one capability.
Project Configuration
Prefer a project-local ## SDD4J section in AGENTS.md when the project does not follow an adapter's defaults exactly.
Use this shape and keep it concise:
## SDD4J
Spec source:
- format: `package-info.java`
- source root: `src/main/java`
- requirements style: EARS
- trace ids: `R<n>.<m>`
Spec language:
- default: `en`
- requirements: localized EARS
Architecture layout:
- skill: `sdd4j-package-by-feature`
- scope: primary project architecture
- capability package pattern: `com.acme.<capability>`
- test package mirrors main package: true
Stack:
- skill: `spring-boot-server`
- build tool: Maven
- verification command: `./mvnw test`
Traceability:
- trace convention: per-capability `{Capability}Requirement` annotation with a nested `Rn` enum; enum constants (e.g. `R1_2`) resolve to the literal `Rn.m` id
- requirement id must resolve to its exact runner-visible `Rn.m` form through a display name, case label, symbol, or annotation consumed by the test/reporting infrastructure
- a normalized Java identifier such as `R1_2` is valid only when the configured infrastructure resolves and displays it as `R1.2`
- JavaDoc and comments alone do not countThe trace convention field names the concrete mechanism that materializes requirement ids — for example the {Capability}Requirement annotation with a nested Rn enum for Java stacks, or literal display-name ids for web stacks and -st modules. Resolve it during setup and write it into the ## SDD4J section; sdd4j-ears-tests consumes it during apply so test materialization is deterministic.
For sdd4j-package-by-layer projects, include explicit layer package roots and the capability mapping convention. For mixed or transitional repositories, include a short architecture routing rule that maps package roots or modules to adapters.
Spec language is optional. When absent, write specs and EARS requirements in English. When present, write the capability title, responsibility, boundary descriptions, requirement prose, entity descriptions, out-of-scope items, system docs, and README generated projections in the configured language. Keep structural section names, requirement ids, package names, class names, method names, boundary operation ids, and trace ids stable unless the project explicitly declares otherwise.
Before authoring, extending, applying, or verifying a capability spec, read the project-local AGENTS.md ## SDD4J section and resolve Spec language. Apply the resolved language to all generated or modified spec prose and localized EARS statements. If Spec language is absent, use English.
System Doc
An optional system doc can live one package above the capability packages, usually at
src/main/java/<base>/package-info.java. Use it only for concerns that span capabilities and have no better home. A one-capability system does not need it. Author from references/system-doc-template.md.
- Charter — one sentence for the whole assembly.
- Vision (optional) — one aspirational sentence: the outcome the assembly chases. Rationale, not contract — no
Sn, no test; the single non-verifiable line in the doc, and the deliberate exception to the traceability invariant. May be proposed by/sdd4j newdistilling a README seed (human accepts/edits). - Components — this system's concrete wiring: which SDD4J capability may call which, which integration events cross boundaries (
/bceowns the generic layering; this owns the concrete dependencies). - System invariants — cross-cutting EARS
shallstatements (idSn) no single SDD4J capability owns. - Ubiquitous language — shared domain nouns defined once, so each SDD4J capability's
## Entitiesstays terse. - Decisions (optional) — append-only log of confirmed choices and their rejected alternatives (a stack pick, a carving, an integration style):
Dn — <choice>. _(why: …; rejected: …)_. Rationale, not contract — like Vision and a statement'swhy: no test, not a trace target. Ids stable; a reversed decision gets a new entry, the old one markedsuperseded by Dm— never edited or deleted. Litmus: testable behaviour → an EARS statement (tested); a standing project rule → README## Conventions; a point-in-time choice with rejected alternatives →Dn. A decision owned by a single SDD4J capability may live in that SDD4J capability's package doc under the same rules. - Stack — the composed stack skill + package base, so
applyreads it instead of re-inferring.
Never duplicate a SDD4J capability's one-liner — a hand-typed SDD4J capability index drifts; the gap is read, not stored. For a SDD4J capability map, mark it generated and regenerate it from the per-SDD4J capability docs.
README Projection
An optional repo-root README.md — a human on-ramp that is a projection of the specs, not a
source of truth. Author from references/readme-template.md. Two slices, handled oppositely:
- Generated (never hand-edited) — the system doc's Charter + Vision, a SDD4J capability map (each SDD4J capability name, its
>one-liner, a link to itspackage-info), and a Mermaid diagram of the declared## Componentswiring, fenced by<!-- sdd4j:generated:start -->/<!-- sdd4j:generated:end -->. - Hand-maintained (outside the markers, since no spec covers it — so it can't drift):
## Conventions, build/run/test delegated to the stack skill, plus free-form meta (license, links, motivation). - Doubles as the inception seed. The hand-written prose outside the markers is what
/sdd4j new(no argument) reads to bootstrap vision + specs (seenew); SDD4J reads it, never rewrites it. - Components diagram — projection, never inference. Render only the declared wiring in the system doc's
## Components(allowed calls + integration events) as a Mermaid graph: nodes are SDD4J capabilities, edges the declared directed relationships. Never infer edges by scanning code — that is discovery, not projection, and drift-prone. No## Components(a one-SDD4J capability system) → nodes only, or omit. Basic Mermaidflowchart/graphsyntax (version-stable, corpus-dense); delegate diagram style to/mermaid. ## Conventionsis the home for project-specific, non-behavioral standards (coverage target, "money is always cents", review policy): declared, not verified — noSn, no test — and distinct from aSystem invariant, which must be behavioral and tested, and from aDndecision, which records a point-in-time choice with its rejected alternatives.- Optional: a one-SDD4J capability project needs none. No markers →
applyleaves the README untouched.
Determinism Boundary
| Concern | Owner | Deterministic? |
| Run verification | Stack skill or configured project command | Yes |
| Locate code and map architecture | Architecture adapter plus AGENTS.md | Mostly deterministic |
| Decompose natural-language feature into capabilities | SDD4J judgment, user-confirmed | No |
Record a confirmed choice as a Dn decision | this skill offers, user-confirmed — never recorded silently | no — semantic |
| Author boundary operations and EARS statements | SDD4J judgment, user-confirmed when ambiguous | No |
| Place packages and classes | Architecture adapter plus stack skill | Yes when configured |
| Structural sync both directions | SDD4J using adapter rules and resolvable test traces | Mostly deterministic |
| Decide if code satisfies a requirement | SDD4J judgment grounded by passing tests | No |
| Regenerate README generated block | SDD4J from package docs | Yes |
- Ask the stack skill "are you green?" — never name a runner or test kind, and never self-certify convergence.
Invocation modes: setup · new · apply · verify
Mode ownership:
setupwrites project configuration only.newwrites capability and system contracts only.applywrites implementation, tests, and generated projections.verifyperforms read-only conformance analysis.
setup
Use setup to configure SDD4J for an existing Java project before creating specs.
Workflow:
- Inspect project files enough to identify Java source roots, build tool, likely stack, and likely layout.
- Detect or ask for the primary architecture layout:
sdd4j-package-by-feature,sdd4j-package-by-layer,sdd4j-bce,sdd4j-hexagonal, or a project-specific mapping. When layer roots (application/domain/infrastructure) andport/adapterpackages coexist, the layout reads as both layered and hexagonal — present the evidence and ask which semantics to enforce; absence ofport/adapterpackages rules hexagonal out. - Detect or ask for the stack skill: Spring Boot, MicroProfile, Java CLI, or another Java stack.
- If multiple layouts appear, treat that as exceptional. Ask whether the project is transitional or multi-module, then propose explicit architecture routing by module, package root, or capability set.
- Resolve the test trace convention: scan tests for an existing trace idiom. When the project already uses one, adopt it. When none exists, ask — offer enumerable choices such as the per-capability
{Capability}Requirementannotation with a nestedRnenum (Java stacks) or literal display-name ids (web stacks,-stmodules) — and record the choice in thetrace conventionfield. - Propose the
## SDD4Jsection forAGENTS.md. - Ask for confirmation before writing or replacing that section.
- Write only the project mapping. Do not create capability specs or domain code during setup.
When confidence is low, ask one concrete question at a time. Prefer enumerable choices with room for a custom answer.
new - declare
Use new to declare a capability spec from a precise capability name, a natural-language feature description, or a README seed when no argument is provided. Coining a capability and extending an existing one are both valid new work because the novelty is the intended behavior.
Clarify before authoring:
- Loop until every contract ambiguity is resolved. Each answer can expose a new gap.
- Never assume silently. If leaning on a default, name it and ask for confirmation.
- Ask one concrete ambiguity per question. Prefer specific options with room for a custom answer.
- Interrogate each boundary operation for trigger, response, invalid triggers, state constraints, entities, identity, validation, lifecycle scope, and what done means.
- Stop only when another engineer could author the same spec from the user's words. If not, ask one more focused question.
For a capability name:
- Resolve
Spec languagefromAGENTS.md ## SDD4J; if absent, use English. - Validate the name using the architecture adapter's naming rules.
- Locate the target package from
AGENTS.mdor the architecture adapter. - If
package-info.javaexists, do not overwrite it without explicit user confirmation. - Clarify boundary operations, entities, happy paths, edge cases, and out-of-scope behavior until the contract is answerable from user intent.
- Read
references/capability-spec-template.mdand author the package spec from it in the resolved spec language. - Use the architecture adapter only to locate the capability package and validate its naming. Do not create implementation classes, entities, test classes, or stack-specific scaffolding during
new; leave all code and test convergence to/sdd4j apply <capability>. - Report the open gap: operation count, requirement count, entity count, and suggested
/sdd4j apply <capability>.
For a feature description:
- Scan existing package specs and architecture mapping.
- Propose one or more capabilities to create or extend. Tag each as
neworextend-existingand include the one-line responsibility. - Ask the user to confirm the decomposition before writing.
- Apply the capability-name workflow to each approved capability. Extend the single existing package spec for existing capabilities; never create a second spec.
- If decomposition introduces cross-capability wiring, shared language, or system invariants, propose a system doc update and ask before writing it.
For a README seed:
- Read only hand-written prose outside
sdd4j:generatedmarkers. - Treat it as a feature description and run the feature-description workflow.
- Propose a
## Visionline distilled from the seed for user acceptance or editing. - Leave the seed prose human-owned. Do not rewrite it except for the generated block when explicitly requested.
apply - converge
Use apply to converge code and tests to an existing capability spec.
Workflow:
- Locate the capability's
package-info.java; if missing, stop and suggest/sdd4j new <capability>. - Resolve
Spec languagefromAGENTS.md ## SDD4J; if absent, use English. - Resolve the applicable architecture and stack from
AGENTS.md, system package docs, repository conventions, or one focused question. If multiple adapters could apply, stop until the routing rule is explicit. Read the system doc's## Decisionsif present — never close a gap with an approach aDnrejected. - Run the stack verification loop before editing when feasible. Treat a green result as necessary evidence, not proof of convergence.
- Read the structural gap both ways.
- Audit semantic conformance for every requirement: compare its trigger, preconditions, observable response, rejection behavior, constraints, and exact contract values with the traced tests and mapped implementation. A resolvable trace id and a green test do not prove that the test asserts the requirement's semantics.
- If verification is green and no structural or semantic gap or drift exists, stop and report already converged.
- Close spec-to-code gaps: each missing operation becomes the adapter-defined operation; each untested
Rn.mgets a traceable test; each declared entity gets the adapter-defined representation when needed. - Delegate EARS-to-test mapping to
sdd4j-ears-testswhen available: one parameterized or table-driven test per### Rngroup and one labeled row or case per statement idRn.m, adapted to the stack's test framework. - Write the correct implementation to pass the new tests.
- Surface code-to-spec drift instead of silently editing the spec to match code. The user decides whether to declare it or delete the orphan.
- Re-run verification and repeat for at most three passes. Then surface remaining failures, gaps, or drift.
Stop when verification is green and no structural or semantic gap or drift remains.
verify
Use verify to check conformance without intentionally implementing missing behavior.
Report:
- Spec location.
- Resolved spec language.
- Resolved architecture adapter, routing rule, and stack.
- Requirement ids with and without tests.
- Semantic mismatches between requirements, their traced tests, and mapped implementation.
- Boundary operations with and without mapped code.
- Entities/models with and without mapped code.
- Inverse drift found in code or tests.
- Verification command and result.
Semantic conformance audit procedure
A green verification and complete traceability are necessary but not sufficient. During verify, audit every Rn.m for semantic drift:
- Extract the concrete contract value the statement fixes: a number, a string, an HTTP status, a timeout, a cache key prefix, a header name, an endpoint, a default fallback, or any literal value.
- Locate the mapped implementation that realizes the statement and the traced test that exercises it.
- Verify that the implementation and the test honor the same contract value, not only the same code path or exception type.
- Pay explicit attention to hardcoded defaults, constants, and fallback values; compare them against the spec.
- If a default, constant, or fallback value differs from the spec, report it as semantic drift and do not treat the build as proof of conformance.
Spec Format
Author capability specs from references/capability-spec-template.md.
Sections must appear in this order: capability title and responsibility, ## Boundary, ## Requirements, optional ## Entities, optional ## Decisions, and ## Out of scope. Keep ## Out of scope even when empty.
Boundary operations must be verb-noun and transport-neutral, such as place-order, not POST /orders or click-submit.
EARS Rules
- Use mandatory requirement wording for every requirement. In English specs, use
shall. In localized specs, use a consistent configured-language equivalent. - Use stable ids and never reuse retired ids.
- Keep statements behavioral and verifiable.
- Keep framework details, URLs, HTTP verbs, database tables, and implementation choices out of requirements unless the stack contract itself is the capability.
- Use EARS as semantic patterns, not English-only keywords. In English specs, use
When,If,While,Where, or ubiquitous EARS statements. In localized specs, express the same event-driven, unwanted-behavior, state-driven, optional-feature, ubiquitous, or complex pattern in the configured language. - Every boundary op traces to a group
Rn; - Every statement
Rn.mtraces to at least one executable test or case whose runner-visible identity resolves to its exact id. - Traceability must be complete in both directions: every statement has a test trace, and every literal or symbolic test trace resolves to an existing statement in the corresponding capability spec.
- One statement may have multiple tests when they cover distinct scenarios or verification levels and the duplication is intentional.
- A new
Rn.mwith no test is a gap, and a method, trace id, orentitytype with no spec counterpart is inverse drift (surfaced, never absorbed into the spec). - The trace may be a literal display name or case label, or a symbol or annotation consumed by the test/reporting infrastructure whose display form is the exact id. A normalized Java identifier such as
R1_2is valid only when it resolves toR1.2; JavaDoc and comments alone do not count. - Optional behavior is expressed with the optional-feature EARS pattern. In English specs, use
Where <feature is included>, the capability shall <response>.Do not useshouldormayfor contract behavior; use equivalent non-optional wording in localized specs.
EARS templates:
| Pattern | Template |
| Ubiquitous | The capability shall <response>. |
| State-driven | While <precondition>, the capability shall <response>. |
| Event-driven | When <trigger>, the capability shall <response>. |
| Optional-feature | Where <feature is included>, the capability shall <response>. |
| Unwanted behavior | If <trigger>, then the capability shall <response>. |
| Complex | While <precondition>, when <trigger>, the capability shall <response>. |
Optional Why
Any boundary operation or Rn.m statement may carry a trailing _(why: ...)_ note.
Rules:
- The
whyexplains origin or intent, not current implementation. - The
whyis rationale, not contract, and is not tested. - The id must remain first so spec parsing and trace resolution remain deterministic.
- A
whyretires with its operation or statement and must not become an orphan.
Optional Decisions
- A confirmed capability-local SDD4J decision may be logged before
## Out of scope, under the same rules as the system doc's## Decisions: stableDn, rejected alternatives in a trailing_(why: …; rejected: …)_, append-only (supersede, never edit), rationale not contract — no test, not a trace target.
Drift Policy
The spec is source of truth for intended behavior. SDD4J can implement missing declared behavior, but it must not auto-expand the spec to bless existing code. When code exists without a spec counterpart, report it as drift and ask whether to declare it or remove it.
Spec-to-code gaps are work SDD4J may close:
- Missing mapped operation for a declared boundary operation.
- Missing mapped representation for a declared entity when the adapter says it should exist.
- Missing test trace for a requirement id.
- Failing behavior for a declared requirement.
Code-to-spec drift is user-decision territory:
- Mapped entrypoint or application operation absent from
## Boundary. - Contract-relevant domain/model/entity artifact absent from
## Entities. - Test tracing an id no statement carries.
- Behavior that expands the capability beyond the spec.
Never edit the spec merely to absorb drift. Ask whether to declare the behavior or remove the orphan.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

