@pavp/storywright 1.10.0 → 1.11.0
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.
|
@@ -15,7 +15,7 @@ Follow the skill's full procedure:
|
|
|
15
15
|
4. Fill the CORE sections (Title, Summary, User Story, Acceptance Criteria, Definition of Done).
|
|
16
16
|
5. Fill optional sections only if they have real content (drop empty ones).
|
|
17
17
|
6. Run INVEST pre-split test. If count ≥2, show candidate children + ask via `AskUserQuestion` with options: "Yes, split" / "Continue without split" / "No, keep as-is". Never auto-split silently. For other verdicts (NOT A STORY / NEEDS REFINEMENT / RUN A SPIKE) — STOP and hand off accordingly.
|
|
18
|
-
7. Render dual outputs
|
|
19
|
-
8.
|
|
18
|
+
7. Render dual outputs via `jira-wiki-formatter`. Use the `Write` tool to write `story.standard.md` and `story.jira-wiki.md` to `docs/storywright/YYYY-MM-DD-HHmm-<title-slug>/` (current local time, title in kebab-case max 5 words). Also emit both as fenced code blocks in chat. Never ask — always write.
|
|
19
|
+
8. Non-blocking assumptions remain? Mark inline with `⚠️ Assumed:`. Do NOT emit clarifications.md.
|
|
20
20
|
|
|
21
21
|
Output in the input language (preserve es/en).
|
package/commands/story-refine.md
CHANGED
|
@@ -16,5 +16,5 @@ Follow the skill's procedure:
|
|
|
16
16
|
4. Fill missing/weak sections via component skills. Preserve original wording where good.
|
|
17
17
|
5. Append a "Refinement log" at the end listing what changed.
|
|
18
18
|
6. Run INVEST pre-split test. If count ≥2, show candidate children + ask via `AskUserQuestion` with options: "Yes, split" / "Continue without split" / "No, keep as-is". Never auto-split silently.
|
|
19
|
-
7. Render dual outputs via `jira-wiki-formatter`.
|
|
20
|
-
8.
|
|
19
|
+
7. Render dual outputs via `jira-wiki-formatter`. Use the `Write` tool to write `story.standard.md` and `story.jira-wiki.md` to `docs/storywright/YYYY-MM-DD-HHmm-<title-slug>/` (current local time, title in kebab-case max 5 words). Also emit both as fenced code blocks in chat. Never ask — always write.
|
|
20
|
+
8. Non-blocking assumptions remain? Mark inline with `⚠️ Assumed:`. Do NOT emit clarifications.md.
|
package/package.json
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { homedir } from "node:os";
|
|
3
|
-
import { cp, mkdir, readdir, rm, unlink } from "node:fs/promises";
|
|
3
|
+
import { cp, mkdir, readdir, readFile, rm, unlink, writeFile } from "node:fs/promises";
|
|
4
4
|
import { join } from "node:path";
|
|
5
|
+
import { execSync } from "node:child_process";
|
|
5
6
|
import { REPO_ROOT, SKILLS_DIR, pathExists } from "./lib/skills.mjs";
|
|
6
7
|
|
|
7
8
|
const skillsTarget = join(homedir(), ".claude", "skills", "storywright");
|
|
@@ -40,7 +41,33 @@ async function installCommands() {
|
|
|
40
41
|
console.log(`✓ Installed slash commands to ${commandsDir} (prefix: ${COMMAND_PREFIX})`);
|
|
41
42
|
}
|
|
42
43
|
|
|
44
|
+
async function ensureGlobalGitignore() {
|
|
45
|
+
let globalIgnorePath;
|
|
46
|
+
try {
|
|
47
|
+
globalIgnorePath = execSync("git config --global core.excludesFile", { encoding: "utf8" }).trim();
|
|
48
|
+
} catch {
|
|
49
|
+
globalIgnorePath = join(homedir(), ".gitignore_global");
|
|
50
|
+
execSync(`git config --global core.excludesFile "${globalIgnorePath}"`);
|
|
51
|
+
}
|
|
52
|
+
if (globalIgnorePath.startsWith("~")) {
|
|
53
|
+
globalIgnorePath = join(homedir(), globalIgnorePath.slice(2));
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
let content = "";
|
|
57
|
+
try { content = await readFile(globalIgnorePath, "utf8"); } catch { /* doesn't exist yet */ }
|
|
58
|
+
|
|
59
|
+
const entry = "docs/storywright/";
|
|
60
|
+
if (content.includes(entry)) {
|
|
61
|
+
console.log(`• Global gitignore already has ${entry}`);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
await writeFile(globalIgnorePath, content + `\n# storywright output\n${entry}\n`, "utf8");
|
|
66
|
+
console.log(`✓ Added ${entry} to ${globalIgnorePath}`);
|
|
67
|
+
}
|
|
68
|
+
|
|
43
69
|
async function main() {
|
|
70
|
+
await ensureGlobalGitignore();
|
|
44
71
|
await installSkills();
|
|
45
72
|
await installCommands();
|
|
46
73
|
console.log(` Restart Claude Code for changes to be picked up.`);
|