@houseofwolvesllc/claude-scrum-skill 2.1.2 → 2.1.3

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "claude-scrum-skill",
3
3
  "description": "Complete scrum pipeline — PRD to production release with Claude as scrum master. Includes project scaffolding, sprint planning, status tracking, sprint releases, and full-project emulation testing.",
4
- "version": "2.1.2",
4
+ "version": "2.1.3",
5
5
  "author": {
6
6
  "name": "House of Wolves LLC"
7
7
  },
package/bin/install.js CHANGED
@@ -6,6 +6,7 @@ const path = require('path');
6
6
  const HOME = process.env.HOME || process.env.USERPROFILE;
7
7
  const SOURCE_DIR = path.join(__dirname, '..', 'skills');
8
8
  const WORKFLOWS_SOURCE_DIR = path.join(__dirname, '..', 'lib', 'workflows');
9
+ const GUIDANCE_SOURCE_DIR = path.join(__dirname, '..', 'lib', 'guidance');
9
10
  const IS_GLOBAL = process.env.npm_config_global === 'true';
10
11
  const CONFIG_FILENAME = 'config.json';
11
12
 
@@ -30,6 +31,7 @@ function main() {
30
31
  installSharedReferences(skillsDir);
31
32
  const installed = installSkills(skillsDir);
32
33
  installWorkflows(skillsDir);
34
+ installGuidance(skillsDir);
33
35
 
34
36
  if (!IS_GLOBAL) {
35
37
  ensureGitignoreEntry(skillsDir);
@@ -121,6 +123,16 @@ function installWorkflows(skillsDir) {
121
123
  console.log(' ⚙️ _workflows (lib/workflows + schemas)');
122
124
  }
123
125
 
126
+ // Copy lib/guidance/ → <skillsDir>/_guidance/ (v2.1.3+).
127
+ // Underscore prefix keeps these internal — orchestrator-injected situational
128
+ // guidance for core epics, never registered as user-facing skills.
129
+ function installGuidance(skillsDir) {
130
+ if (!fs.existsSync(GUIDANCE_SOURCE_DIR)) return;
131
+ const guidanceDest = path.join(skillsDir, '_guidance');
132
+ copyRecursive(GUIDANCE_SOURCE_DIR, guidanceDest);
133
+ console.log(' 🧭 _guidance (design-patterns + domain-modeling)');
134
+ }
135
+
124
136
  function ensureGitignoreEntry(skillsDir) {
125
137
  const projectRoot = path.resolve(skillsDir, '..', '..');
126
138
  const gitignorePath = path.join(projectRoot, '.gitignore');
@@ -212,4 +224,4 @@ if (require.main === module) {
212
224
  main();
213
225
  }
214
226
 
215
- module.exports = { deepMerge, installConfig };
227
+ module.exports = { deepMerge, installConfig, installSkills, installGuidance };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@houseofwolvesllc/claude-scrum-skill",
3
- "version": "2.1.2",
3
+ "version": "2.1.3",
4
4
  "description": "Claude Code skills for scrum project management — PRD to production release pipeline with project scaffolding, sprint planning, status tracking, sprint releases, full-project emulation testing, autonomous orchestration, and project cleanup.",
5
5
  "bin": {},
6
6
  "publishConfig": {
@@ -17,7 +17,7 @@ Fully autonomous project lifecycle driver. Plans sprints, executes stories via p
17
17
  2. Read `../shared/config.json` to determine the scaffolding mode (`scaffolding` key: `"local"`, `"github"`, `"jira"`, or `"trello"`, default: `"local"`). If `"local"`, also read the `paths.backlog` and `paths.context` values (`paths.context` defaults to `.claude-scrum-skill/context` and is where Step 3 subagents look for per-epic CONTEXT.md files). Read `../shared/references/PROVIDERS.md` for provider-specific API commands when using a remote provider.
18
18
  3. Read the project's `CLAUDE.md` (if it exists) for project-specific rules. **All subagents you spawn must also read and follow `CLAUDE.md`** — include this instruction explicitly in every subagent prompt.
19
19
  3a. Read `../shared/references/ENGINEERING_BASELINE.md` — the universal engineering baseline (Clean Code, Test-Driven Development, and the simple-design Arbitration Rule). It applies to **all** work this orchestration drives, across every epic and story. Resolve its absolute path; you will pass it to the sprint pipeline as `baselinePath` so every implementation and review subagent follows it. Order of precedence: project `CLAUDE.md` > engineering baseline > situational guidance (`design-patterns`, `domain-modeling`).
20
- 3b. **Subdomain classification gates situational guidance.** `/project-spec` classifies each epic as `core`, `supporting`, or `generic`, and `/project-scaffold` persists that classification into epic metadata: the `subdomain` field of each `_epic.md` frontmatter (local mode) or a `subdomain:<value>` label on the epic's issues (remote modes). Read the classification from that epic metadata — the single authoritative source — and do NOT re-derive it. At implementation time, only **`core`** epics receive the situational guidance skills (`design-patterns`, `domain-modeling`); `supporting`, `generic`, and unclassified epics get the baseline only. Resolve the absolute `SKILL.md` paths for the `design-patterns` and `domain-modeling` skills so you can pass them as `situationalGuidance` for core epics.
20
+ 3b. **Subdomain classification gates situational guidance.** `/project-spec` classifies each epic as `core`, `supporting`, or `generic`, and `/project-scaffold` persists that classification into epic metadata: the `subdomain` field of each `_epic.md` frontmatter (local mode) or a `subdomain:<value>` label on the epic's issues (remote modes). Read the classification from that epic metadata — the single authoritative source — and do NOT re-derive it. At implementation time, only **`core`** epics receive the situational guidance skills (`design-patterns`, `domain-modeling`); `supporting`, `generic`, and unclassified epics get the baseline only. The two guidance files ship in the non-registered `_guidance/` directory — the same mechanism `_workflows/` uses, where the underscore prefix keeps Claude Code from registering them as user-facing skills. Their absolute paths are `<skills-root>/_guidance/design-patterns/SKILL.md` and `<skills-root>/_guidance/domain-modeling/SKILL.md`, where `<skills-root>` is the parent directory of this SKILL.md's parent (for a SKILL.md at `~/.claude/skills/project-orchestrate/SKILL.md`, `<skills-root>` is `~/.claude/skills`). The same algorithm works for global, local, and plugin install layouts. Pass these two paths as `situationalGuidance` for core epics — there is exactly one place to look, no `node_modules` hunting.
21
21
  4. Read `../shared/references/PERSONAS.md` for role preambles. When spawning
22
22
  subagents, select the persona matching each story's `persona:*` label (GitHub mode)
23
23
  or `persona` frontmatter field (local mode). If no persona exists, use `impl` (the default).
@@ -412,7 +412,7 @@ backendMode: local | github | jira | trello
412
412
  repoIdentifier: <owner/repo> (github mode only)
413
413
  personaPreambles: { impl: "...", ops: "...", research: "..." }
414
414
  baselinePath: <absolute path to shared/references/ENGINEERING_BASELINE.md> (always set; applies to every story)
415
- situationalGuidance: <array of absolute SKILL.md paths for design-patterns and domain-modeling — set ONLY when the current epic's subdomain is `core`; omit or pass [] for supporting/generic/untagged epics>
415
+ situationalGuidance: <the two guidance SKILL.md paths from the non-registered _guidance/ directory — `<skills-root>/_guidance/design-patterns/SKILL.md` and `<skills-root>/_guidance/domain-modeling/SKILL.md` (resolve `<skills-root>` per Step 3b) — set ONLY when the current epic's subdomain is `core`; omit or pass [] for supporting/generic/untagged epics>
416
416
  ```
417
417
 
418
418
  Wait for the workflow to return. The return is `SprintStoryReturn[]` — one entry per completed (or blocked / failed) story per `lib/workflows/schemas/SprintStoryReturnSchema.json`.