plain-forge 1.0.23 → 1.0.24-next.2f8299c

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.md +11 -8
  2. package/bin/cli.mjs +5 -4
  3. package/forge/rules/plain-forge.md +10 -0
  4. package/forge/skills/add-acceptance-test/SKILL.md +1 -1
  5. package/forge/skills/add-concept/SKILL.md +1 -1
  6. package/forge/skills/add-feature/SKILL.md +1 -1
  7. package/forge/skills/add-functional-spec/SKILL.md +1 -1
  8. package/forge/skills/add-functional-specs/SKILL.md +1 -1
  9. package/forge/skills/add-implementation-requirement/SKILL.md +1 -1
  10. package/forge/skills/add-resource/SKILL.md +1 -1
  11. package/forge/skills/add-template/SKILL.md +1 -1
  12. package/forge/skills/add-test-requirement/SKILL.md +1 -1
  13. package/forge/skills/analyze-2-func-specs/SKILL.md +1 -1
  14. package/forge/skills/analyze-func-specs/SKILL.md +1 -1
  15. package/forge/skills/analyze-if-func-spec-too-complex/SKILL.md +1 -1
  16. package/forge/skills/break-down-func-spec/SKILL.md +1 -1
  17. package/forge/skills/check-plain-env/SKILL.md +1 -1
  18. package/forge/skills/consolidate-concepts/SKILL.md +1 -1
  19. package/forge/skills/create-import-module/SKILL.md +1 -1
  20. package/forge/skills/create-requires-module/SKILL.md +1 -1
  21. package/forge/skills/debug-specs/SKILL.md +1 -1
  22. package/forge/skills/forge-plain/SKILL.md +1 -1
  23. package/forge/skills/init-plain-project/SKILL.md +1 -1
  24. package/forge/skills/load-plain-reference/SKILL.md +22 -24
  25. package/forge/{rules → skills/load-plain-reference/rules}/integration-embedded-testing.md +1 -1
  26. package/forge/skills/plain-healthcheck/SKILL.md +1 -1
  27. package/forge/skills/refactor-module/SKILL.md +1 -1
  28. package/forge/skills/resolve-section-ownership/SKILL.md +1 -1
  29. package/forge/skills/resolve-spec-conflict/SKILL.md +1 -1
  30. package/package.json +1 -1
  31. /package/forge/{rules → skills/load-plain-reference/rules}/bullet-continuation.md +0 -0
  32. /package/forge/{rules → skills/load-plain-reference/rules}/concise-specs-examples.md +0 -0
  33. /package/forge/{rules → skills/load-plain-reference/rules}/concise-specs-integration-examples.md +0 -0
  34. /package/forge/{rules → skills/load-plain-reference/rules}/concise-specs.md +0 -0
  35. /package/forge/{rules → skills/load-plain-reference/rules}/definitions.md +0 -0
  36. /package/forge/{rules → skills/load-plain-reference/rules}/examples/integration-embedded-testing/prepare_environment_java.sh +0 -0
  37. /package/forge/{rules → skills/load-plain-reference/rules}/examples/integration-embedded-testing/run_conformance_tests_java.sh +0 -0
  38. /package/forge/{rules → skills/load-plain-reference/rules}/examples/integration-embedded-testing/run_unittests_java.sh +0 -0
  39. /package/forge/{rules → skills/load-plain-reference/rules}/exported-concepts.md +0 -0
  40. /package/forge/{rules → skills/load-plain-reference/rules}/func-specs.md +0 -0
  41. /package/forge/{rules → skills/load-plain-reference/rules}/impl-reqs.md +0 -0
  42. /package/forge/{rules → skills/load-plain-reference/rules}/import-modules.md +0 -0
  43. /package/forge/{rules → skills/load-plain-reference/rules}/integration-embedded.md +0 -0
  44. /package/forge/{rules → skills/load-plain-reference/rules}/integration-standalone.md +0 -0
  45. /package/forge/{rules → skills/load-plain-reference/rules}/integrations.md +0 -0
  46. /package/forge/{rules → skills/load-plain-reference/rules}/linked-resources.md +0 -0
  47. /package/forge/{rules → skills/load-plain-reference/rules}/module-structure.md +0 -0
  48. /package/forge/{rules → skills/load-plain-reference/rules}/required-concepts.md +0 -0
  49. /package/forge/{rules → skills/load-plain-reference/rules}/requires-modules.md +0 -0
  50. /package/forge/{rules → skills/load-plain-reference/rules}/test-reqs.md +0 -0
package/README.md CHANGED
@@ -87,23 +87,26 @@ Each install writes three subfolders under the chosen directory:
87
87
 
88
88
  ```
89
89
  <agent-dir>/
90
- skills/ # every plain-forge skill
91
- rules/ # spec-writing rules (see "How the rules get applied" below)
90
+ skills/ # every plain-forge skill; the spec-writing rules ship in skills/load-plain-reference/rules/
91
+ rules/ # plain-forge.md, a short pointer to load-plain-reference (see "How the rules get applied" below)
92
92
  docs/ # shared reference docs
93
93
  ```
94
94
 
95
95
  #### How the rules get applied per agent
96
96
 
97
- The `skills/` are discovered natively by every supported agent. The `load-plain-reference` skill
98
- loads only the rules relevant to the current task and skips rules already present in context. Some
99
- agents additionally support native rules wiring:
97
+ The `skills/` are discovered natively by every supported agent. The spec-writing rules ship inside the
98
+ `load-plain-reference` skill, which loads only the rules relevant to the current task and skips rules
99
+ already present in context — so a session pays for the rules its task needs, not for the whole rule
100
+ set. The installed `rules/` dir holds only `plain-forge.md`, a short pointer telling the agent to
101
+ invoke `load-plain-reference` when it works on `.plain` files. Each agent picks that pointer up as
102
+ follows:
100
103
 
101
104
  | Agent | How rules are applied |
102
105
  |-------|-----------------------|
103
- | **Claude Code** | Native — Claude Code auto-loads `.claude/rules/*.md` at launch. Each rule carries `paths: "**/*.plain"` frontmatter so Claude scopes it to `.plain` files. No extra wiring. |
106
+ | **Claude Code** | Native — Claude Code auto-loads `.claude/rules/*.md`. The pointer carries `paths: "**/*.plain"` frontmatter, so it loads only once Claude reads or edits a `.plain` file. No extra wiring. |
104
107
  | **OpenCode** | OpenCode doesn't auto-load a `rules/` dir; it reads globs from the `instructions` array in `opencode.json`. plain-forge **merges** a rules glob there — `.opencode/rules/*.md` (project, written to `./opencode.json`) or the absolute `~/.config/opencode/rules/*.md` (global, written to `~/.config/opencode/opencode.json`; absolute because OpenCode doesn't expand `~`). |
105
108
  | **ForgeCode** | plain-forge also appends a fenced managed pointer block to `AGENTS.md`: repo-root `./AGENTS.md` for project installs or `~/forge/AGENTS.md` globally. |
106
- | **Codex / GitHub Copilot / Universal** | No extra instruction file is generated. Their discovered `load-plain-reference` skill loads applicable files from `.agents/rules/` when needed. |
109
+ | **Codex / GitHub Copilot / Universal** | No extra instruction file is generated. Their discovered `load-plain-reference` skill loads applicable files from `.agents/skills/load-plain-reference/rules/` when needed. |
107
110
 
108
111
  When plain-forge touches `opencode.json` or ForgeCode's `AGENTS.md`, it merges into existing content
109
112
  and leaves unrelated configuration intact. `uninstall` removes only plain-forge's glob or block.
@@ -254,7 +257,7 @@ git add vendor/pyro
254
257
  git commit -m "Bump pyro to vX.Y.Z"
255
258
  ```
256
259
 
257
- On `install`, the CLI reads `forge/skills` and `forge/rules` and writes them into the chosen agent directory (`.claude/`, `.agents/` for Codex/Copilot/universal, `.forge/`, or `.opencode/` — see the per-agent table above for global-scope paths), recording every file it wrote in `<agent-dir>/.plain-forge/manifest.json` so `update` can later refresh and prune precisely. For agents that need it, it also wires the rules into `opencode.json` or ForgeCode's `AGENTS.md` (see [How the rules get applied per agent](#how-the-rules-get-applied-per-agent)).
260
+ On `install`, the CLI reads `forge/skills` and `forge/rules` and writes them into the chosen agent directory (`.claude/`, `.agents/` for Codex/Copilot/universal, `.forge/`, or `.opencode/` — see the per-agent table above for global-scope paths), recording every file it wrote in `<agent-dir>/.plain-forge/manifest.json` so `update` can later refresh and prune precisely. For agents that need it, it also wires the rules pointer into `opencode.json` or ForgeCode's `AGENTS.md` (see [How the rules get applied per agent](#how-the-rules-get-applied-per-agent)).
258
261
 
259
262
  ## Available Skills
260
263
 
package/bin/cli.mjs CHANGED
@@ -369,8 +369,8 @@ function opencodeConfigPath(scope) {
369
369
  // The instructions glob to add. Project scope uses a cwd-relative glob (opencode
370
370
  // resolves relative instruction paths against the launch cwd). Global scope must
371
371
  // be absolute: opencode does not expand ~ and would resolve a relative path
372
- // against the project cwd, not the config dir. Only top-level rules/*.md are
373
- // wired in — the examples/ subtree holds reference scripts, not instructions.
372
+ // against the project cwd, not the config dir. rules/ holds only the pointer to
373
+ // load-plain-reference; the authoring rules ship inside that skill and load on demand.
374
374
  function opencodeRulesGlob(scope) {
375
375
  if (scope === "global") {
376
376
  return toPosix(
@@ -531,8 +531,9 @@ function agentsMdBlock(glob) {
531
531
  "## ***plain authoring rules (plain-forge)",
532
532
  "",
533
533
  "When creating or editing `.plain` specification files, first read and follow",
534
- `every rule file matching \`${glob}\`. Each file covers one section or topic of`,
535
- "the ***plain language; they are installed and maintained by plain-forge.",
534
+ `every rule file matching \`${glob}\`. They route to the \`load-plain-reference\``,
535
+ "skill, which loads the ***plain authoring rules for the task; they are installed",
536
+ "and maintained by plain-forge.",
536
537
  AGENTS_MD_END,
537
538
  ].join("\n");
538
539
  }
@@ -0,0 +1,10 @@
1
+ ---
2
+ description: Routes .plain work to the load-plain-reference skill, which loads the ***plain authoring rules
3
+ paths:
4
+ - "**/*.plain"
5
+ ---
6
+
7
+ # ***plain authoring rules
8
+
9
+ - Before you read, edit, or write any `.plain` file, invoke the `load-plain-reference` skill and read the rule files it routes you to.
10
+ - It loads only the ***plain authoring rules that apply to the task; they ship inside that skill under `rules/`.
@@ -8,7 +8,7 @@ description: >-
8
8
 
9
9
  # Add Acceptance Test
10
10
 
11
- Always use the skill `load-plain-reference` to retrieve the ***plain syntax rules — but only if you haven't done so yet.
11
+ **Load the rules first.** Before you read, edit, or write any `.plain` file, invoke the `load-plain-reference` skill and read the rule files it routes you to. Skip this only if `load-plain-reference` already ran in this conversation.
12
12
 
13
13
  ## Workflow
14
14
 
@@ -8,7 +8,7 @@ description: >-
8
8
 
9
9
  # Add Concept
10
10
 
11
- Always use the skill `load-plain-reference` to retrieve the ***plain syntax rules — but only if you haven't done so yet.
11
+ **Load the rules first.** Before you read, edit, or write any `.plain` file, invoke the `load-plain-reference` skill and read the rule files it routes you to. Skip this only if `load-plain-reference` already ran in this conversation.
12
12
 
13
13
  ## Workflow
14
14
 
@@ -13,7 +13,7 @@ description: >-
13
13
 
14
14
  # Add Feature
15
15
 
16
- Always use the skill `load-plain-reference` to retrieve the ***plain syntax rules — but only if you haven't done so yet.
16
+ **Load the rules first.** Before you read, edit, or write any `.plain` file, invoke the `load-plain-reference` skill and read the rule files it routes you to. Skip this only if `load-plain-reference` already ran in this conversation.
17
17
 
18
18
  `add-feature` is the continuous-loop counterpart of `forge-plain`. Where `forge-plain` bootstraps an entire project from scratch, `add-feature` adds a single feature to an **existing** set of `.plain` specs. It begins with a short intent phase, then runs the authoring loop scoped to one feature.
19
19
 
@@ -13,7 +13,7 @@ description: >-
13
13
 
14
14
  # Add Functional Spec
15
15
 
16
- Always use the skill `load-plain-reference` to retrieve the ***plain syntax rules — but only if you haven't done so yet.
16
+ **Load the rules first.** Before you read, edit, or write any `.plain` file, invoke the `load-plain-reference` skill and read the rule files it routes you to. Skip this only if `load-plain-reference` already ran in this conversation.
17
17
 
18
18
  ## Workflow
19
19
 
@@ -12,7 +12,7 @@ description: >-
12
12
 
13
13
  # Add Functional Specs
14
14
 
15
- Always use the skill `load-plain-reference` to retrieve the ***plain syntax rules — but only if you haven't done so yet.
15
+ **Load the rules first.** Before you read, edit, or write any `.plain` file, invoke the `load-plain-reference` skill and read the rule files it routes you to. Skip this only if `load-plain-reference` already ran in this conversation.
16
16
 
17
17
  ## When to Use
18
18
 
@@ -10,7 +10,7 @@ description: >-
10
10
 
11
11
  # Add Implementation Requirement
12
12
 
13
- Always use the skill `load-plain-reference` to retrieve the ***plain syntax rules — but only if you haven't done so yet.
13
+ **Load the rules first.** Before you read, edit, or write any `.plain` file, invoke the `load-plain-reference` skill and read the rule files it routes you to. Skip this only if `load-plain-reference` already ran in this conversation.
14
14
 
15
15
  ## Workflow
16
16
 
@@ -9,7 +9,7 @@ description: >-
9
9
 
10
10
  # Add Resource
11
11
 
12
- Always use the skill `load-plain-reference` to retrieve the ***plain syntax rules — but only if you haven't done so yet.
12
+ **Load the rules first.** Before you read, edit, or write any `.plain` file, invoke the `load-plain-reference` skill and read the rule files it routes you to. Skip this only if `load-plain-reference` already ran in this conversation.
13
13
 
14
14
  Linked resources are external files referenced from within a `.plain` spec using markdown link syntax. The file contents are passed to the renderer alongside the spec, providing additional context for code generation.
15
15
 
@@ -8,7 +8,7 @@ description: >-
8
8
 
9
9
  # Add Template
10
10
 
11
- Always use the skill `load-plain-reference` to retrieve the ***plain syntax rules — but only if you haven't done so yet.
11
+ **Load the rules first.** Before you read, edit, or write any `.plain` file, invoke the `load-plain-reference` skill and read the rule files it routes you to. Skip this only if `load-plain-reference` already ran in this conversation.
12
12
 
13
13
  Templates use Liquid syntax (`{% include %}`) to reuse the same spec content across multiple `.plain` files. Each inclusion can pass different parameters, producing tailored output from a single source. This is distinct from `import` and `requires` — templates are about textual reuse with parameterization, not module dependencies.
14
14
 
@@ -9,7 +9,7 @@ description: >-
9
9
 
10
10
  # Add Test Requirement
11
11
 
12
- Always use the skill `load-plain-reference` to retrieve the ***plain syntax rules — but only if you haven't done so yet.
12
+ **Load the rules first.** Before you read, edit, or write any `.plain` file, invoke the `load-plain-reference` skill and read the rule files it routes you to. Skip this only if `load-plain-reference` already ran in this conversation.
13
13
 
14
14
  ## Workflow
15
15
 
@@ -9,7 +9,7 @@ description: >-
9
9
 
10
10
  # Analyze Two Functional Specs
11
11
 
12
- Always use the skill `load-plain-reference` to retrieve the ***plain syntax rules — but only if you haven't done so yet.
12
+ **Load the rules first.** Before you read, edit, or write any `.plain` file, invoke the `load-plain-reference` skill and read the rule files it routes you to. Skip this only if `load-plain-reference` already ran in this conversation.
13
13
 
14
14
  ## Input
15
15
 
@@ -9,7 +9,7 @@ description: >-
9
9
 
10
10
  # Analyze Functional Specs
11
11
 
12
- Always use the skill `load-plain-reference` to retrieve the ***plain syntax rules — but only if you haven't done so yet.
12
+ **Load the rules first.** Before you read, edit, or write any `.plain` file, invoke the `load-plain-reference` skill and read the rule files it routes you to. Skip this only if `load-plain-reference` already ran in this conversation.
13
13
 
14
14
  ## Input
15
15
 
@@ -10,7 +10,7 @@ description: >-
10
10
 
11
11
  # Analyze If Functional Spec Is Too Complex
12
12
 
13
- Always use the skill `load-plain-reference` to retrieve the ***plain syntax rules — but only if you haven't done so yet.
13
+ **Load the rules first.** Before you read, edit, or write any `.plain` file, invoke the `load-plain-reference` skill and read the rule files it routes you to. Skip this only if `load-plain-reference` already ran in this conversation.
14
14
 
15
15
  ## Why This Matters
16
16
 
@@ -8,7 +8,7 @@ description: >-
8
8
 
9
9
  # Break Down Functional Spec
10
10
 
11
- Always use the skill `load-plain-reference` to retrieve the ***plain syntax rules — but only if you haven't done so yet.
11
+ **Load the rules first.** Before you read, edit, or write any `.plain` file, invoke the `load-plain-reference` skill and read the rule files it routes you to. Skip this only if `load-plain-reference` already ran in this conversation.
12
12
 
13
13
  ## When to Use
14
14
 
@@ -12,7 +12,7 @@ description: >-
12
12
 
13
13
  # Check Plain Env
14
14
 
15
- Always use the skill `load-plain-reference` to retrieve the ***plain syntax rules — but only if you haven't done so yet.
15
+ **Load the rules first.** Before you read, edit, or write any `.plain` file, invoke the `load-plain-reference` skill and read the rule files it routes you to. Skip this only if `load-plain-reference` already ran in this conversation.
16
16
 
17
17
  This skill answers one question: **does the host machine have everything the ***plain project needs to render and test?** It reads the project, derives the requirement list, probes the machine, and returns a report. It never installs anything itself — that decision belongs to the user.
18
18
 
@@ -9,7 +9,7 @@ description: >-
9
9
 
10
10
  # Consolidate Concepts
11
11
 
12
- Always use the skill `load-plain-reference` to retrieve the ***plain syntax rules — but only if you haven't done so yet.
12
+ **Load the rules first.** Before you read, edit, or write any `.plain` file, invoke the `load-plain-reference` skill and read the rule files it routes you to. Skip this only if `load-plain-reference` already ran in this conversation.
13
13
 
14
14
  ## When to Use
15
15
 
@@ -9,7 +9,7 @@ description: >-
9
9
 
10
10
  # Create Import Module
11
11
 
12
- Always use the skill `load-plain-reference` to retrieve the ***plain syntax rules — but only if you haven't done so yet.
12
+ **Load the rules first.** Before you read, edit, or write any `.plain` file, invoke the `load-plain-reference` skill and read the rule files it routes you to. Skip this only if `load-plain-reference` already ran in this conversation.
13
13
 
14
14
  ## What an Import Module Is
15
15
 
@@ -9,7 +9,7 @@ description: >-
9
9
 
10
10
  # Create Requires Module
11
11
 
12
- Always use the skill `load-plain-reference` to retrieve the ***plain syntax rules — but only if you haven't done so yet.
12
+ **Load the rules first.** Before you read, edit, or write any `.plain` file, invoke the `load-plain-reference` skill and read the rule files it routes you to. Skip this only if `load-plain-reference` already ran in this conversation.
13
13
 
14
14
  ## What Requires Does
15
15
 
@@ -9,7 +9,7 @@ description: >-
9
9
 
10
10
  # Debug Specs
11
11
 
12
- Always use the skill `load-plain-reference` to retrieve the ***plain syntax rules — but only if you haven't done so yet.
12
+ **Load the rules first.** Before you read, edit, or write any `.plain` file, invoke the `load-plain-reference` skill and read the rule files it routes you to. Skip this only if `load-plain-reference` already ran in this conversation.
13
13
 
14
14
  ## When to Use
15
15
 
@@ -12,7 +12,7 @@ description: >-
12
12
 
13
13
  # Forge Plain
14
14
 
15
- Always invoke the `load-plain-reference` skill first to load the `***plain` syntax rules — but only if it hasn't been loaded yet this session.
15
+ **Load the rules first.** Before you read, edit, or write any `.plain` file, invoke the `load-plain-reference` skill and read the rule files it routes you to. Skip this only if `load-plain-reference` already ran in this conversation.
16
16
 
17
17
  ## Role
18
18
 
@@ -13,7 +13,7 @@ description: >-
13
13
 
14
14
  # Init Plain Project
15
15
 
16
- Always use the skill `load-plain-reference` to retrieve the ***plain syntax rules — but only if you haven't done so yet.
16
+ **Load the rules first.** Before you read, edit, or write any `.plain` file, invoke the `load-plain-reference` skill and read the rule files it routes you to. Skip this only if `load-plain-reference` already ran in this conversation.
17
17
 
18
18
  ## Scope
19
19
 
@@ -9,8 +9,9 @@ description: >-
9
9
 
10
10
  # Load the ***plain reference
11
11
 
12
- Load only the rules and references required for the current task. Files under `../../rules/` are
13
- the source of truth for `.plain` syntax and authoring constraints. Do not restate or override them.
12
+ Load only the rules and references required for the current task. Files under `rules/`, next to
13
+ this `SKILL.md`, are the source of truth for `.plain` syntax and authoring constraints. Do not
14
+ restate or override them.
14
15
 
15
16
  **First, confirm the rules about to be loaded are current.** On the first invocation of this skill in
16
17
  a session, invoke `check-forge-version` before loading any rule file. A stale plain-forge ships stale
@@ -26,10 +27,7 @@ Skip the check on later invocations in the same session, and skip it when the ne
26
27
 
27
28
  ## 1. Account for rules already loaded
28
29
 
29
- - In Claude Code, applicable `.claude/rules/*.md` files are loaded natively. Do not read those rule
30
- files again.
31
- - In another agent, do not reread a rule whose full content is already present in the current
32
- context.
30
+ - Do not reread a rule whose full content is already present in the current context.
33
31
  - Otherwise, read the applicable files from the routing table below before inspecting or changing
34
32
  `.plain` content.
35
33
 
@@ -39,19 +37,19 @@ All paths are relative to this `SKILL.md`.
39
37
 
40
38
  | Task or content | Rule files |
41
39
  |---|---|
42
- | New module, file skeleton, section placement, or comments | `../../rules/module-structure.md` |
43
- | Moving facts between sections (see `resolve-section-ownership`) | `../../rules/module-structure.md`, plus the rule file of each section involved |
44
- | Definitions or concept usage | `../../rules/definitions.md` |
45
- | Functional specs or acceptance tests | `../../rules/func-specs.md` |
46
- | Implementation requirements or unit tests | `../../rules/impl-reqs.md` |
47
- | Test requirements or conformance tests | `../../rules/test-reqs.md` |
48
- | `import` modules | `../../rules/import-modules.md` |
49
- | `requires` modules | `../../rules/requires-modules.md` |
50
- | `required_concepts` | `../../rules/required-concepts.md` |
51
- | `exported_concepts` | `../../rules/exported-concepts.md` |
52
- | Linked files or `resources/` | `../../rules/linked-resources.md` |
53
- | Any `.plain` text or example | `../../rules/bullet-continuation.md`, `../../rules/concise-specs.md` |
54
- | Drafting or trimming spec wording, or reviewing a spec for verbosity | `../../rules/concise-specs-examples.md` |
40
+ | New module, file skeleton, section placement, or comments | `rules/module-structure.md` |
41
+ | Moving facts between sections (see `resolve-section-ownership`) | `rules/module-structure.md`, plus the rule file of each section involved |
42
+ | Definitions or concept usage | `rules/definitions.md` |
43
+ | Functional specs or acceptance tests | `rules/func-specs.md` |
44
+ | Implementation requirements or unit tests | `rules/impl-reqs.md` |
45
+ | Test requirements or conformance tests | `rules/test-reqs.md` |
46
+ | `import` modules | `rules/import-modules.md` |
47
+ | `requires` modules | `rules/requires-modules.md` |
48
+ | `required_concepts` | `rules/required-concepts.md` |
49
+ | `exported_concepts` | `rules/exported-concepts.md` |
50
+ | Linked files or `resources/` | `rules/linked-resources.md` |
51
+ | Any `.plain` text or example | `rules/bullet-continuation.md`, `rules/concise-specs.md` |
52
+ | Drafting or trimming spec wording, or reviewing a spec for verbosity | `rules/concise-specs-examples.md` |
55
53
 
56
54
  For a whole-file review or a task spanning several sections, load the union of the applicable rule
57
55
  files. Do not load every rule by default.
@@ -60,16 +58,16 @@ files. Do not load every rule by default.
60
58
 
61
59
  For an integration spec, always read:
62
60
 
63
- - `../../rules/integrations.md`
61
+ - `rules/integrations.md`
64
62
 
65
63
  Then read the rule matching the integration shape:
66
64
 
67
- - Embedded integration: `../../rules/integration-embedded.md`
68
- - Standalone integration: `../../rules/integration-standalone.md`
69
- - Embedded integration test scripts: `../../rules/integration-embedded-testing.md`
65
+ - Embedded integration: `rules/integration-embedded.md`
66
+ - Standalone integration: `rules/integration-standalone.md`
67
+ - Embedded integration test scripts: `rules/integration-embedded-testing.md`
70
68
 
71
69
  When drafting or trimming the wording of an integration spec, also read
72
- `../../rules/concise-specs-integration-examples.md`.
70
+ `rules/concise-specs-integration-examples.md`.
73
71
 
74
72
  Do not load integration rules for ordinary non-integration specs.
75
73
 
@@ -286,4 +286,4 @@ Use them as a template when adding a new embedded integration in Java / Maven
286
286
  4. Wire them into the module's `config.yaml` via the `unittests-script`, `conformance-tests-script`, and `prepare-environment-script` keys. Use `init-config-file` to assemble the canonical form
287
287
  5. Smoke-test by running each script manually with the renderer's output folder as `$1` (and the conformance-tests folder as `$2` for the conformance runner). Confirm exit codes match what the renderer expects
288
288
 
289
- For non-Java languages, the plain-forge skills [`implement-prepare-environment-script`](../skills/implement-prepare-environment-script/SKILL.md), [`implement-unit-testing-script`](../skills/implement-unit-testing-script/SKILL.md), and [`implement-conformance-testing-script`](../skills/implement-conformance-testing-script/SKILL.md) adapt the contract above to Python, Node.js, Go, Rust, Flutter, and others. Always route script creation through these skills so the cross-cutting rules above are applied uniformly.
289
+ For non-Java languages, the plain-forge skills [`implement-prepare-environment-script`](../../implement-prepare-environment-script/SKILL.md), [`implement-unit-testing-script`](../../implement-unit-testing-script/SKILL.md), and [`implement-conformance-testing-script`](../../implement-conformance-testing-script/SKILL.md) adapt the contract above to Python, Node.js, Go, Rust, Flutter, and others. Always route script creation through these skills so the cross-cutting rules above are applied uniformly.
@@ -13,7 +13,7 @@ description: >-
13
13
 
14
14
  # Plain Healthcheck
15
15
 
16
- Always use the skill `load-plain-reference` to retrieve the ***plain syntax rules — but only if you haven't done so yet. Step 3b checks every module against those rules, and they are needed to fix what `plain-parser` reports in Step 3a.
16
+ **Load the rules first.** Before you read, edit, or write any `.plain` file, invoke the `load-plain-reference` skill and read the rule files it routes you to. Skip this only if `load-plain-reference` already ran in this conversation. Step 3b checks every module against those rules, and they are needed to fix what `plain-parser` reports in Step 3a.
17
17
 
18
18
  ## When to run
19
19
 
@@ -9,7 +9,7 @@ description: >-
9
9
 
10
10
  # Refactor Module
11
11
 
12
- Always use the skill `load-plain-reference` to retrieve the ***plain syntax rules — but only if you haven't done so yet.
12
+ **Load the rules first.** Before you read, edit, or write any `.plain` file, invoke the `load-plain-reference` skill and read the rule files it routes you to. Skip this only if `load-plain-reference` already ran in this conversation.
13
13
 
14
14
  ## When to Use
15
15
 
@@ -6,7 +6,7 @@ description: >-
6
6
 
7
7
  # Resolve Section Ownership
8
8
 
9
- Always use the skill `load-plain-reference` to retrieve the ***plain syntax rules — but only if you haven't done so yet.
9
+ **Load the rules first.** Before you read, edit, or write any `.plain` file, invoke the `load-plain-reference` skill and read the rule files it routes you to. Skip this only if `load-plain-reference` already ran in this conversation.
10
10
 
11
11
  This is the ownership counterpart to `break-down-func-spec`. That skill splits one functional spec into several because it is **too large**; this one moves facts between sections because they are in the **wrong place**. The two are unrelated: a correctly placed spec can be too large, and a one-line bullet can be misplaced.
12
12
 
@@ -9,7 +9,7 @@ description: >-
9
9
 
10
10
  # Resolve Spec Conflict
11
11
 
12
- Always use the skill `load-plain-reference` to retrieve the ***plain syntax rules — but only if you haven't done so yet.
12
+ **Load the rules first.** Before you read, edit, or write any `.plain` file, invoke the `load-plain-reference` skill and read the rule files it routes you to. Skip this only if `load-plain-reference` already ran in this conversation.
13
13
 
14
14
  ## When This Applies
15
15
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "plain-forge",
3
- "version": "1.0.23",
3
+ "version": "1.0.24-next.2f8299c",
4
4
  "description": "Conversational spec-writing tool for ***plain specification language",
5
5
  "type": "module",
6
6
  "engines": {