procedure-cli 1.8.0 → 1.10.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.
- package/README.md +25 -11
- package/config/stacks/r3f-3d-web.json +18 -0
- package/dist/lib/architecture.js +10 -0
- package/dist/lib/architecture.js.map +1 -1
- package/dist/lib/skills.d.ts +19 -0
- package/dist/lib/skills.js +82 -0
- package/dist/lib/skills.js.map +1 -1
- package/dist/lib/template.d.ts +17 -2
- package/dist/lib/template.js +42 -5
- package/dist/lib/template.js.map +1 -1
- package/dist/steps/generation.js +8 -5
- package/dist/steps/generation.js.map +1 -1
- package/dist/steps/powerline.js +10 -4
- package/dist/steps/powerline.js.map +1 -1
- package/dist/steps/product-context.js +26 -0
- package/dist/steps/product-context.js.map +1 -1
- package/dist/steps/stack-style.js +32 -0
- package/dist/steps/stack-style.js.map +1 -1
- package/package.json +1 -1
- package/templates/AGENTS.md.hbs +24 -0
- package/templates/CLAUDE.md.hbs +42 -0
- package/templates/skills/b3awesome-code-fix/SKILL.md +11 -0
- package/templates/skills/b3awesome-code-review/SKILL.md +11 -0
- package/templates/skills/b3awesome-procedure-setup/SKILL.md +132 -0
package/README.md
CHANGED
|
@@ -88,6 +88,7 @@ Choose a **QuickStart preset** or configure manually:
|
|
|
88
88
|
| Next.js Full-Stack | SaaS apps, marketing sites, SSR/SSG |
|
|
89
89
|
| React SPA | Dashboards, admin panels, SPAs |
|
|
90
90
|
| Static Site (Vite + React + shadcn/ui) | Landing pages, portfolios, marketing sites — Tailwind + shadcn/ui |
|
|
91
|
+
| 3D Web (Vite + React Three Fiber) | Interactive 3D/WebGL sites — Three.js via R3F, drei, Zustand |
|
|
91
92
|
| Python + FastAPI | AI/ML backends, REST APIs, data services |
|
|
92
93
|
| Go HTTP Service | High-perf APIs, microservices |
|
|
93
94
|
| React Native + Expo | Cross-platform mobile apps |
|
|
@@ -117,7 +118,9 @@ Select from 7 patterns (Monolith, MVC, Feature folders, Hexagonal, Microservices
|
|
|
117
118
|
> **Coming in v1.5:** options are filtered by the stack chosen in Step 2 — Bubbletea/Ink preselect Elm Architecture, SwiftUI/Compose preselect MVVM, Next.js App Router preselects "App Router + RSC". Architecture notes are rewritten per `(framework × pattern)` combo so a TUI project never reads "Controllers handle HTTP".
|
|
118
119
|
|
|
119
120
|
### 4. Product Context
|
|
120
|
-
Problem statement, target users, tech stack (multi-select, prefilled from Step 2; Bubbletea preset also preselects Lipgloss + Bubbles; SwiftUI preset also preselects SwiftData + Combine), core features (multi-select with custom input), non-goals.
|
|
121
|
+
Problem statement, target users, tech stack (multi-select, prefilled from Step 2; Bubbletea preset also preselects Lipgloss + Bubbles; SwiftUI preset also preselects SwiftData + Combine; React Three Fiber preset also preselects Three.js + drei + Zustand + Vite), core features (multi-select with custom input), non-goals.
|
|
122
|
+
|
|
123
|
+
Selecting the `Three.js` chip adds a **3D / WebGL** section to CLAUDE.md and AGENTS.md covering GPU resource disposal, zero-allocation `useFrame` loops, instancing and BVH raycasting thresholds, `<Billboard>` labels, DOM fallbacks, and the `r3f-perf` measurement budget. See [docs/3D-WEB-STACK.md](./docs/3D-WEB-STACK.md) for the full stack rationale.
|
|
121
124
|
|
|
122
125
|
> **Coming in v1.5:** tech stack chips are regrouped into 8 semantic categories — UI / Data / Cache / Auth / Payments / Observability / AI-MCP / Deploy. Same multi-select UX, no extra step. Each chip selected injects a small targeted section into CLAUDE.md (Auth & RLS stub, rate-limit note, MCP tools section, deployment runbook). Nothing selected → nothing rendered (zero-noise default).
|
|
123
126
|
|
|
@@ -130,19 +133,19 @@ Four independent yes/no prompts — each explained before asking:
|
|
|
130
133
|
- **Claude Powerline** — live status bar (git branch, context %, cost, active tools); statusLine calls the `claude-powerline` binary directly (no `npx` cold-start per redraw). After saying yes, choose to install the binary globally automatically or install it yourself (`npm i -g @owloops/claude-powerline`)
|
|
131
134
|
- **Git repository** — `git init` + initial commit with the generated files
|
|
132
135
|
- **npm release scripts** — creates `~/bin/<project>-release` and adds `release:patch/minor/major` to `package.json`
|
|
133
|
-
- **Code review skills** — installs `/b3awesome-code-review`, `/b3awesome-code-fix`, and `/add-procedure-cli-rule` slash commands for Claude Code, Codex CLI, and OpenCode; creates `CODE-REVIEW.md` and `CODE-FIXED.md` append-only log templates; places an archive script in `scripts/` for compacting resolved entries
|
|
136
|
+
- **Code review skills** — installs `/b3awesome-code-review`, `/b3awesome-code-fix`, `/b3awesome-procedure-setup`, and `/add-procedure-cli-rule` slash commands for Claude Code, Codex CLI, and OpenCode; creates `CODE-REVIEW.md` and `CODE-FIXED.md` append-only log templates; places an archive script in `scripts/` for compacting resolved entries; also ensures the full Matt Pocock skill set (22 skills incl. the companions the procedures invoke: `code-review`, `codebase-design`, `diagnosing-bugs`, `tdd`) is installed **globally** via `npx skills add mattpocock/skills -g` — checks `~/.agents/skills` first and only installs what's missing (once per machine); if the install fails (offline, no npx), the manual command is printed instead
|
|
134
137
|
|
|
135
138
|
## Utility Scripts
|
|
136
139
|
|
|
137
140
|
### `procedure-cli-skills-copy.sh`
|
|
138
141
|
|
|
139
|
-
Standalone script to
|
|
142
|
+
Standalone script to adopt the full Procedure CLI review/fix setup into any existing project (useful if the project was created before the skills were available, if Setup was skipped, or for projects not generated by Procedure CLI at all).
|
|
140
143
|
|
|
141
144
|
**What it does:**
|
|
142
|
-
- Copies `/add-procedure-cli-rule`
|
|
143
|
-
-
|
|
144
|
-
-
|
|
145
|
-
-
|
|
145
|
+
- Copies `/b3awesome-code-review`, `/b3awesome-code-fix`, `/b3awesome-procedure-setup`, and `/add-procedure-cli-rule` skills to Claude Code, Codex CLI, and OpenCode
|
|
146
|
+
- Seeds `CODE-REVIEW.md`, `CODE-FIXED.md`, and `scripts/archive-reviews.sh`
|
|
147
|
+
- Ensures the full Matt Pocock skill set is installed globally — checks `~/.agents/skills` first, installs only what's missing via `npx skills add -g` (agents: Claude Code, Crush, Pi, Qoder)
|
|
148
|
+
- Skips existing files (safe — never overwrites; fully idempotent)
|
|
146
149
|
|
|
147
150
|
**Setup:**
|
|
148
151
|
```bash
|
|
@@ -161,14 +164,25 @@ pcsc
|
|
|
161
164
|
|
|
162
165
|
# Or explicitly specify destination
|
|
163
166
|
~/procedure-cli-skills-copy.sh /path/to/your-project
|
|
167
|
+
|
|
168
|
+
# Update mode — refresh procedure-owned files in an OLD procedure-based repo
|
|
169
|
+
# to the latest versions (skills + archive script; .bak backup when content
|
|
170
|
+
# differs). User-owned files are NEVER touched: CLAUDE.md, AGENTS.md,
|
|
171
|
+
# CODE-REVIEW.md, CODE-FIXED.md.
|
|
172
|
+
~/procedure-cli-skills-copy.sh --update /path/to/your-project
|
|
164
173
|
```
|
|
165
174
|
|
|
166
175
|
**Output:**
|
|
167
176
|
```
|
|
168
|
-
📦
|
|
169
|
-
✅ Claude Code: .claude/skills/
|
|
170
|
-
✅ Codex CLI: .codex/skills/
|
|
171
|
-
✅
|
|
177
|
+
📦 Adopting Procedure CLI setup into .
|
|
178
|
+
✅ Claude Code: .claude/skills/b3awesome-code-review/SKILL.md
|
|
179
|
+
✅ Codex CLI: .codex/skills/b3awesome-code-review/SKILL.md
|
|
180
|
+
✅ Claude Code: .claude/skills/b3awesome-code-fix/SKILL.md
|
|
181
|
+
...
|
|
182
|
+
✅ CODE-REVIEW.md
|
|
183
|
+
✅ CODE-FIXED.md
|
|
184
|
+
✅ scripts/archive-reviews.sh
|
|
185
|
+
⏭️ Matt Pocock skills already installed globally (22 skills)
|
|
172
186
|
✨ Done!
|
|
173
187
|
```
|
|
174
188
|
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"codeStyle": [
|
|
3
|
+
"TypeScript strict mode, ESM imports",
|
|
4
|
+
"Functional components only, hooks for state",
|
|
5
|
+
"Scene graph is declarative — no imperative scene.add(), let R3F reconcile",
|
|
6
|
+
"useFrame allocates nothing — hoist vectors/quaternions outside the loop",
|
|
7
|
+
"Dispose geometries, materials, and textures on unmount — GPU memory is not GC'd",
|
|
8
|
+
"Use drei abstractions before hand-rolling controls, text, or helpers",
|
|
9
|
+
"Path alias @/ → src/ (Vite resolve)"
|
|
10
|
+
],
|
|
11
|
+
"buildCommand": "tsc -b && vite build",
|
|
12
|
+
"testCommand": "vitest",
|
|
13
|
+
"typecheckCommand": "tsc --noEmit",
|
|
14
|
+
"lintCommand": "eslint .",
|
|
15
|
+
"architectureNotes": "Feature folders",
|
|
16
|
+
"framework": "React Three Fiber",
|
|
17
|
+
"language": "TypeScript"
|
|
18
|
+
}
|
package/dist/lib/architecture.js
CHANGED
|
@@ -44,6 +44,10 @@ const PAIR_NOTES = {
|
|
|
44
44
|
"Feature folders": "Co-locate route segments in app/ with their server/client components, actions, and tests. Cross-route building blocks in components/ or lib/.",
|
|
45
45
|
MVC: "Use only for legacy Pages Router projects — for App Router, prefer 'App Router + RSC'.",
|
|
46
46
|
},
|
|
47
|
+
"React Three Fiber": {
|
|
48
|
+
"Feature folders": "Each scene owns its graph under src/scenes/<name>/ — the <Canvas>, its meshes, and its camera rig. Reusable 3D primitives in src/components/3d/, DOM overlay in src/components/ui/. useFrame logic extracted into src/hooks/ so render loops stay testable in isolation. Scene state lives in a Zustand store (src/store/) — never in component state, because useFrame reads it every frame and React re-renders would stall the loop. The rule of thumb: React owns the tree, the store owns the values, useFrame owns the mutation.",
|
|
49
|
+
"Layered": "Presentation (scenes + components) → Interaction (hooks wrapping controls, gestures, raycasting) → Data (graph model, layout engine). The layout engine computes positions independently of Three.js so it stays unit-testable without a WebGL context.",
|
|
50
|
+
},
|
|
47
51
|
React: {
|
|
48
52
|
"Feature folders": "Each feature owns its components, hooks, state, and tests under src/features/<name>/. Shared primitives in src/components/.",
|
|
49
53
|
},
|
|
@@ -96,6 +100,8 @@ export function resolveOptions(language, framework) {
|
|
|
96
100
|
return "MVVM";
|
|
97
101
|
if (fw.includes("uikit"))
|
|
98
102
|
return "MVVM";
|
|
103
|
+
if (fw.includes("three fiber") || fw.includes("r3f"))
|
|
104
|
+
return "Feature folders";
|
|
99
105
|
if (fw.includes("next"))
|
|
100
106
|
return "App Router + RSC";
|
|
101
107
|
if (fw.includes("react") || fw.includes("vue") || fw.includes("svelte"))
|
|
@@ -125,6 +131,10 @@ export function resolveOptions(language, framework) {
|
|
|
125
131
|
if (fw.includes("next") || fw.includes("react") || fw.includes("vue") || fw.includes("svelte")) {
|
|
126
132
|
hidden.add("MVC");
|
|
127
133
|
}
|
|
134
|
+
if (fw.includes("three fiber") || fw.includes("r3f")) {
|
|
135
|
+
hidden.add("Microservices");
|
|
136
|
+
hidden.add("Serverless");
|
|
137
|
+
}
|
|
128
138
|
const filtered = ALL_PATTERNS.filter((p) => !hidden.has(p.value));
|
|
129
139
|
const ordered = [
|
|
130
140
|
...filtered.filter((p) => p.value === recommended),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"architecture.js","sourceRoot":"","sources":["../../src/lib/architecture.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"architecture.js","sourceRoot":"","sources":["../../src/lib/architecture.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/skills.d.ts
CHANGED
|
@@ -3,3 +3,22 @@
|
|
|
3
3
|
* Uses copy (not symlink) because npx runs from a temp cache dir that gets cleaned up.
|
|
4
4
|
*/
|
|
5
5
|
export declare function setupSkills(targetDir: string): void;
|
|
6
|
+
/** The command users run to install the full set themselves (global).
|
|
7
|
+
* -s / -a must be repeated per value — comma-separated lists match nothing. */
|
|
8
|
+
export declare const MP_SKILLS_INSTALL_COMMAND: string;
|
|
9
|
+
export interface MpSkillsInstallResult {
|
|
10
|
+
installed: boolean;
|
|
11
|
+
/** Skills that were missing and got installed by this call. */
|
|
12
|
+
installedNow: string[];
|
|
13
|
+
reason?: string;
|
|
14
|
+
}
|
|
15
|
+
/** Matt Pocock skills not yet present in the global ~/.agents/skills folder. */
|
|
16
|
+
export declare function missingMpSkills(): string[];
|
|
17
|
+
/**
|
|
18
|
+
* Ensure the Matt Pocock skill set is installed globally (~/.agents/skills +
|
|
19
|
+
* per-agent symlinks). Checks first and only installs what's missing — a
|
|
20
|
+
* no-op (no network) when everything is already present. Failures (offline,
|
|
21
|
+
* no npx) are returned rather than thrown — the caller falls back to manual
|
|
22
|
+
* instructions.
|
|
23
|
+
*/
|
|
24
|
+
export declare function installMattPocockSkills(): MpSkillsInstallResult;
|
package/dist/lib/skills.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { copyFileSync, chmodSync, existsSync } from 'node:fs';
|
|
2
|
+
import { execSync } from 'node:child_process';
|
|
3
|
+
import { homedir } from 'node:os';
|
|
2
4
|
import { resolve, dirname } from 'node:path';
|
|
3
5
|
import { ensureDir, resolveTemplatePath } from './fs.js';
|
|
4
6
|
/**
|
|
@@ -8,6 +10,7 @@ import { ensureDir, resolveTemplatePath } from './fs.js';
|
|
|
8
10
|
export function setupSkills(targetDir) {
|
|
9
11
|
const reviewSkillSrc = resolveTemplatePath('skills/b3awesome-code-review/SKILL.md');
|
|
10
12
|
const fixSkillSrc = resolveTemplatePath('skills/b3awesome-code-fix/SKILL.md');
|
|
13
|
+
const procedureSetupSkillSrc = resolveTemplatePath('skills/b3awesome-procedure-setup/SKILL.md');
|
|
11
14
|
const addRuleSkillSrc = resolveTemplatePath('skills/add-procedure-cli-rule/SKILL.md');
|
|
12
15
|
const addRuleOpencodeSrc = resolveTemplatePath('skills/add-procedure-cli-rule/opencode.md');
|
|
13
16
|
const archiveScriptSrc = resolveTemplatePath('skills/scripts/archive-reviews.sh');
|
|
@@ -17,12 +20,15 @@ export function setupSkills(targetDir) {
|
|
|
17
20
|
const skillDests = [
|
|
18
21
|
{ src: reviewSkillSrc, dest: resolve(targetDir, '.claude/skills/b3awesome-code-review/SKILL.md') },
|
|
19
22
|
{ src: fixSkillSrc, dest: resolve(targetDir, '.claude/skills/b3awesome-code-fix/SKILL.md') },
|
|
23
|
+
{ src: procedureSetupSkillSrc, dest: resolve(targetDir, '.claude/skills/b3awesome-procedure-setup/SKILL.md') },
|
|
20
24
|
{ src: addRuleSkillSrc, dest: resolve(targetDir, '.claude/skills/add-procedure-cli-rule/SKILL.md') },
|
|
21
25
|
{ src: reviewSkillSrc, dest: resolve(targetDir, '.codex/skills/b3awesome-code-review/SKILL.md') },
|
|
22
26
|
{ src: fixSkillSrc, dest: resolve(targetDir, '.codex/skills/b3awesome-code-fix/SKILL.md') },
|
|
27
|
+
{ src: procedureSetupSkillSrc, dest: resolve(targetDir, '.codex/skills/b3awesome-procedure-setup/SKILL.md') },
|
|
23
28
|
{ src: addRuleSkillSrc, dest: resolve(targetDir, '.codex/skills/add-procedure-cli-rule/SKILL.md') },
|
|
24
29
|
{ src: reviewSkillSrc, dest: resolve(targetDir, '.opencode/commands/b3awesome-code-review.md') },
|
|
25
30
|
{ src: fixSkillSrc, dest: resolve(targetDir, '.opencode/commands/b3awesome-code-fix.md') },
|
|
31
|
+
{ src: procedureSetupSkillSrc, dest: resolve(targetDir, '.opencode/commands/b3awesome-procedure-setup.md') },
|
|
26
32
|
{ src: addRuleOpencodeSrc, dest: resolve(targetDir, '.opencode/commands/add-procedure-cli-rule.md') },
|
|
27
33
|
];
|
|
28
34
|
for (const { src, dest } of skillDests) {
|
|
@@ -50,4 +56,80 @@ function copySkill(src, dest) {
|
|
|
50
56
|
ensureDir(dirname(dest));
|
|
51
57
|
copyFileSync(src, dest);
|
|
52
58
|
}
|
|
59
|
+
// The full Matt Pocock skill set (engineering + productivity) kept available
|
|
60
|
+
// globally on the dev machine. The b3awesome review/fix skills invoke a subset
|
|
61
|
+
// (code-review, codebase-design, diagnosing-bugs, tdd); the rest form the
|
|
62
|
+
// idea → spec → tickets → implement flow.
|
|
63
|
+
const MP_SKILLS = [
|
|
64
|
+
// engineering
|
|
65
|
+
'ask-matt',
|
|
66
|
+
'code-review',
|
|
67
|
+
'codebase-design',
|
|
68
|
+
'diagnosing-bugs',
|
|
69
|
+
'domain-modeling',
|
|
70
|
+
'grill-with-docs',
|
|
71
|
+
'implement',
|
|
72
|
+
'improve-codebase-architecture',
|
|
73
|
+
'prototype',
|
|
74
|
+
'research',
|
|
75
|
+
'resolving-merge-conflicts',
|
|
76
|
+
'setup-matt-pocock-skills',
|
|
77
|
+
'tdd',
|
|
78
|
+
'to-spec',
|
|
79
|
+
'to-tickets',
|
|
80
|
+
'triage',
|
|
81
|
+
'wayfinder',
|
|
82
|
+
// productivity
|
|
83
|
+
'grill-me',
|
|
84
|
+
'grilling',
|
|
85
|
+
'handoff',
|
|
86
|
+
'teach',
|
|
87
|
+
'writing-great-skills',
|
|
88
|
+
];
|
|
89
|
+
const MP_AGENTS = ['claude-code', 'crush', 'pi', 'qoder'];
|
|
90
|
+
/** The command users run to install the full set themselves (global).
|
|
91
|
+
* -s / -a must be repeated per value — comma-separated lists match nothing. */
|
|
92
|
+
export const MP_SKILLS_INSTALL_COMMAND = [
|
|
93
|
+
'npx -y skills add mattpocock/skills',
|
|
94
|
+
...MP_SKILLS.map((s) => `-s ${s}`),
|
|
95
|
+
...MP_AGENTS.map((a) => `-a ${a}`),
|
|
96
|
+
'-g',
|
|
97
|
+
'-y',
|
|
98
|
+
].join(' ');
|
|
99
|
+
/** Matt Pocock skills not yet present in the global ~/.agents/skills folder. */
|
|
100
|
+
export function missingMpSkills() {
|
|
101
|
+
const root = resolve(homedir(), '.agents', 'skills');
|
|
102
|
+
return MP_SKILLS.filter((skill) => !existsSync(resolve(root, skill)));
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Ensure the Matt Pocock skill set is installed globally (~/.agents/skills +
|
|
106
|
+
* per-agent symlinks). Checks first and only installs what's missing — a
|
|
107
|
+
* no-op (no network) when everything is already present. Failures (offline,
|
|
108
|
+
* no npx) are returned rather than thrown — the caller falls back to manual
|
|
109
|
+
* instructions.
|
|
110
|
+
*/
|
|
111
|
+
export function installMattPocockSkills() {
|
|
112
|
+
const missing = missingMpSkills();
|
|
113
|
+
if (missing.length === 0) {
|
|
114
|
+
return { installed: true, installedNow: [] };
|
|
115
|
+
}
|
|
116
|
+
const command = [
|
|
117
|
+
'npx -y skills add mattpocock/skills',
|
|
118
|
+
...missing.map((s) => `-s ${s}`),
|
|
119
|
+
...MP_AGENTS.map((a) => `-a ${a}`),
|
|
120
|
+
'-g',
|
|
121
|
+
'-y',
|
|
122
|
+
].join(' ');
|
|
123
|
+
try {
|
|
124
|
+
execSync(command, { stdio: 'ignore' });
|
|
125
|
+
return { installed: true, installedNow: missing };
|
|
126
|
+
}
|
|
127
|
+
catch (err) {
|
|
128
|
+
return {
|
|
129
|
+
installed: false,
|
|
130
|
+
installedNow: [],
|
|
131
|
+
reason: err instanceof Error ? err.message : String(err),
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
}
|
|
53
135
|
//# sourceMappingURL=skills.js.map
|
package/dist/lib/skills.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/lib/skills.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/lib/skills.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/template.d.ts
CHANGED
|
@@ -10,8 +10,23 @@ export declare const INK_DOC_FILES: Array<{
|
|
|
10
10
|
* Returns a list of file paths that would be overwritten.
|
|
11
11
|
*/
|
|
12
12
|
export declare function checkConflicts(targetDir: string, data?: Partial<WizardAnswers>): string[];
|
|
13
|
-
export
|
|
14
|
-
|
|
13
|
+
export interface ScaffoldReport {
|
|
14
|
+
/** Files written fresh (did not exist before). */
|
|
15
|
+
written: string[];
|
|
16
|
+
/** Existing files left untouched; the new render went to `newFile` instead. */
|
|
17
|
+
preserved: Array<{
|
|
18
|
+
file: string;
|
|
19
|
+
newFile: string;
|
|
20
|
+
}>;
|
|
21
|
+
}
|
|
22
|
+
export declare function copyInkDocs(targetDir: string, report: ScaffoldReport): void;
|
|
23
|
+
/**
|
|
24
|
+
* Marker recording that (and when) Procedure CLI generated this project.
|
|
25
|
+
* `b3awesome-procedure-setup` uses it to tell a fresh install from a
|
|
26
|
+
* working folder. Always refreshed on generation.
|
|
27
|
+
*/
|
|
28
|
+
export declare function writeProcedureMarker(targetDir: string): void;
|
|
29
|
+
export declare function scaffoldAll(targetDir: string, data: WizardAnswers): ScaffoldReport;
|
|
15
30
|
export interface ReleaseConflicts {
|
|
16
31
|
releaseScriptExists: boolean;
|
|
17
32
|
packageJsonHasRelease: boolean;
|
package/dist/lib/template.js
CHANGED
|
@@ -69,32 +69,69 @@ export function checkConflicts(targetDir, data) {
|
|
|
69
69
|
}
|
|
70
70
|
return allOutputs.filter((f) => existsSync(resolve(targetDir, f)));
|
|
71
71
|
}
|
|
72
|
-
|
|
72
|
+
/**
|
|
73
|
+
* Never-overwrite rule: when the output already exists, the new render is
|
|
74
|
+
* written alongside as `<file>.new` and the existing file is preserved —
|
|
75
|
+
* running the wizard on a working folder can never destroy user docs.
|
|
76
|
+
*/
|
|
77
|
+
function safeOutputPath(targetDir, output, report) {
|
|
78
|
+
const outputPath = resolve(targetDir, output);
|
|
79
|
+
if (existsSync(outputPath)) {
|
|
80
|
+
const newOutput = `${output}.new`;
|
|
81
|
+
report.preserved.push({ file: output, newFile: newOutput });
|
|
82
|
+
return resolve(targetDir, newOutput);
|
|
83
|
+
}
|
|
84
|
+
report.written.push(output);
|
|
85
|
+
return outputPath;
|
|
86
|
+
}
|
|
87
|
+
export function copyInkDocs(targetDir, report) {
|
|
73
88
|
for (const { src, dest } of INK_DOC_FILES) {
|
|
74
89
|
const srcPath = resolveTemplatePath(src);
|
|
75
|
-
const destPath =
|
|
90
|
+
const destPath = safeOutputPath(targetDir, dest, report);
|
|
76
91
|
ensureDir(dirname(destPath));
|
|
77
92
|
copyFileSync(srcPath, destPath);
|
|
78
93
|
}
|
|
79
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* Marker recording that (and when) Procedure CLI generated this project.
|
|
97
|
+
* `b3awesome-procedure-setup` uses it to tell a fresh install from a
|
|
98
|
+
* working folder. Always refreshed on generation.
|
|
99
|
+
*/
|
|
100
|
+
export function writeProcedureMarker(targetDir) {
|
|
101
|
+
const claudeDir = resolve(targetDir, '.claude');
|
|
102
|
+
ensureDir(claudeDir);
|
|
103
|
+
let version = 'unknown';
|
|
104
|
+
try {
|
|
105
|
+
const pkgPath = resolve(resolveTemplatePath('..'), 'package.json');
|
|
106
|
+
const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
107
|
+
version = pkg.version ?? 'unknown';
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
// Missing/malformed package.json — marker still written with version unknown
|
|
111
|
+
}
|
|
112
|
+
writeFileSync(resolve(claudeDir, 'procedure-cli.json'), JSON.stringify({ version, generatedAt: new Date().toISOString() }, null, 2) + '\n', 'utf-8');
|
|
113
|
+
}
|
|
80
114
|
export function scaffoldAll(targetDir, data) {
|
|
115
|
+
const report = { written: [], preserved: [] };
|
|
81
116
|
for (const { template, output } of TEMPLATE_MAP) {
|
|
82
117
|
const templatePath = resolveTemplatePath(template);
|
|
83
|
-
const outputPath =
|
|
118
|
+
const outputPath = safeOutputPath(targetDir, output, report);
|
|
84
119
|
writeTemplate(templatePath, outputPath, data);
|
|
85
120
|
}
|
|
86
121
|
if (data.framework === 'Ink') {
|
|
87
|
-
copyInkDocs(targetDir);
|
|
122
|
+
copyInkDocs(targetDir, report);
|
|
88
123
|
}
|
|
89
124
|
const deployTarget = pickDeployTarget(data.techStack);
|
|
90
125
|
if (deployTarget) {
|
|
91
126
|
const templatePath = resolveTemplatePath('deployment/00-README.md.hbs');
|
|
92
|
-
const outputPath =
|
|
127
|
+
const outputPath = safeOutputPath(targetDir, 'deployment/00-README.md', report);
|
|
93
128
|
writeTemplate(templatePath, outputPath, {
|
|
94
129
|
...data,
|
|
95
130
|
deployTarget,
|
|
96
131
|
});
|
|
97
132
|
}
|
|
133
|
+
writeProcedureMarker(targetDir);
|
|
134
|
+
return report;
|
|
98
135
|
}
|
|
99
136
|
export function checkReleaseConflicts(projectName, targetDir) {
|
|
100
137
|
const scriptPath = homeBinPath(`${projectName}-release`);
|
package/dist/lib/template.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/lib/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC3F,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAGtE,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAU,EAAE,CAAU,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAErE;;;;GAIG;AACH,UAAU,CAAC,cAAc,CAAC,UAAU,EAAE,UAAyB,QAAiB,EAAE,MAAe,EAAE,OAAiC;IAClI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAClD,IAAI,CAAC,MAAM;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/E,CAAC;SAAM,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACxC,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC1D,CAAC,CAAC,CAAC;AAEH,MAAM,UAAU,cAAc,CAC5B,YAAoB,EACpB,IAA6B;IAE7B,MAAM,MAAM,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,YAAoB,EACpB,UAAkB,EAClB,IAA6B;IAE7B,MAAM,QAAQ,GAAG,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACpD,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAC/B,aAAa,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,YAAY,GAAgD;IAChE,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE;IAClD,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE;IAClD,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE;IAClD,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,aAAa,EAAE;IACtD,EAAE,QAAQ,EAAE,0BAA0B,EAAE,MAAM,EAAE,sBAAsB,EAAE;IACxE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,EAAE,cAAc,EAAE;IACxD,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,YAAY,EAAE;CACpD,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;AAEnE,SAAS,gBAAgB,CAAC,SAA6B;IACrD,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;IACtC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;IACtD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAyC;IACjE,EAAE,GAAG,EAAE,oCAAoC,EAAE,IAAI,EAAE,iCAAiC,EAAE;IACtF,EAAE,GAAG,EAAE,+BAA+B,EAAE,IAAI,EAAE,4BAA4B,EAAE;CAC7E,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,SAAiB,EAAE,IAA6B;IAC7E,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACrD,IAAI,IAAI,EAAE,SAAS,KAAK,KAAK,EAAE,CAAC;QAC9B,UAAU,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;QACtC,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,SAAiB;
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/lib/template.ts"],"names":[],"mappings":"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"}
|
package/dist/steps/generation.js
CHANGED
|
@@ -18,11 +18,12 @@ const INK_EXTRA_FILES = INK_DOC_FILES.map((f) => f.dest);
|
|
|
18
18
|
export default function Generation({ answers, onComplete }) {
|
|
19
19
|
const [phase, setPhase] = useState("summary");
|
|
20
20
|
const [errorMsg, setErrorMsg] = useState("");
|
|
21
|
+
const [report, setReport] = useState(null);
|
|
21
22
|
useEffect(() => {
|
|
22
23
|
if (phase !== "running")
|
|
23
24
|
return;
|
|
24
25
|
try {
|
|
25
|
-
scaffoldAll(process.cwd(), answers);
|
|
26
|
+
setReport(scaffoldAll(process.cwd(), answers));
|
|
26
27
|
setPhase("done");
|
|
27
28
|
}
|
|
28
29
|
catch (err) {
|
|
@@ -33,9 +34,11 @@ export default function Generation({ answers, onComplete }) {
|
|
|
33
34
|
useEffect(() => {
|
|
34
35
|
if (phase !== "done")
|
|
35
36
|
return;
|
|
36
|
-
|
|
37
|
+
// Give the user longer to read the preserved-files notice
|
|
38
|
+
const delay = report && report.preserved.length > 0 ? 5000 : 1500;
|
|
39
|
+
const timer = setTimeout(() => onComplete({ generationSkipped: false }), delay);
|
|
37
40
|
return () => clearTimeout(timer);
|
|
38
|
-
}, [phase]);
|
|
41
|
+
}, [phase, report]);
|
|
39
42
|
function handleConfirm() { setPhase("running"); }
|
|
40
43
|
function handleCancel() { onComplete({ generationSkipped: true }); }
|
|
41
44
|
if (phase === "summary") {
|
|
@@ -46,7 +49,7 @@ export default function Generation({ answers, onComplete }) {
|
|
|
46
49
|
const codeStyleDisplay = answers.codeStyle.length > 0
|
|
47
50
|
? answers.codeStyle.join(", ")
|
|
48
51
|
: "N/A";
|
|
49
|
-
return (_jsxs(_Fragment, { children: [_jsx(GutterLine, { children: _jsx(Text, { bold: true, color: C.sapphire, children: "Project Info" }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: [_jsx(Text, { color: C.label, children: " Name: " }), _jsx(Text, { color: C.inputed, children: answers.projectName || "untitled" })] }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: [_jsx(Text, { color: C.label, children: " Description: " }), _jsx(Text, { color: C.inputed, children: answers.description || "N/A" })] }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: [_jsx(Text, { color: C.label, children: " Package manager: " }), _jsx(Text, { color: C.inputed, children: answers.packageManager }), _jsx(Text, { color: C.label, children: " | License: " }), _jsx(Text, { color: C.inputed, children: answers.license })] }) }), _jsx(GutterLine, { children: _jsx(Text, { children: " " }) }), _jsx(GutterLine, { children: _jsx(Text, { bold: true, color: C.sapphire, children: "Stack & Style" }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: [_jsx(Text, { color: C.label, children: " Language: " }), _jsx(Text, { color: C.inputed, children: answers.language || "N/A" }), _jsx(Text, { color: C.label, children: " | Framework: " }), _jsx(Text, { color: C.inputed, children: answers.framework || "N/A" })] }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: [_jsx(Text, { color: C.label, children: " Code style: " }), _jsx(Text, { color: C.inputed, children: codeStyleDisplay })] }) }), _jsx(GutterLine, { children: _jsx(Text, { children: " " }) }), _jsx(GutterLine, { children: _jsx(Text, { bold: true, color: C.sapphire, children: "Build & Test" }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: [_jsx(Text, { color: C.label, children: " Build: " }), _jsx(Text, { color: C.inputed, children: answers.buildCommand || "N/A" }), _jsx(Text, { color: C.label, children: " | Test: " }), _jsx(Text, { color: C.inputed, children: answers.testCommand || "N/A" })] }) }), (answers.typecheckCommand || answers.lintCommand) && (_jsx(GutterLine, { children: _jsxs(Text, { children: [_jsx(Text, { color: C.label, children: " Typecheck: " }), _jsx(Text, { color: C.inputed, children: answers.typecheckCommand || "N/A" }), _jsx(Text, { color: C.label, children: " | Lint: " }), _jsx(Text, { color: C.inputed, children: answers.lintCommand || "N/A" })] }) })), answers.prCommand && (_jsx(GutterLine, { children: _jsxs(Text, { children: [_jsx(Text, { color: C.label, children: " PR: " }), _jsx(Text, { color: C.inputed, children: answers.prCommand })] }) })), _jsx(GutterLine, { children: _jsx(Text, { children: " " }) }), _jsx(GutterLine, { children: _jsx(Text, { bold: true, color: C.sapphire, children: "Architecture" }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: [_jsx(Text, { color: C.label, children: " Architecture: " }), _jsx(Text, { color: C.inputed, children: answers.architecture || "N/A" })] }) }), _jsx(GutterLine, { children: _jsx(Text, { children: " " }) }), _jsx(GutterLine, { children: _jsx(Text, { bold: true, color: C.sapphire, children: "Product Context" }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: [_jsx(Text, { color: C.label, children: " Problem: " }), _jsx(Text, { color: C.inputed, children: answers.problem || "N/A" })] }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: [_jsx(Text, { color: C.label, children: " Users: " }), _jsx(Text, { color: C.inputed, children: answers.users || "N/A" })] }) }), answers.techStack && (_jsx(GutterLine, { children: _jsxs(Text, { children: [_jsx(Text, { color: C.label, children: " Tech stack: " }), _jsx(Text, { color: C.inputed, children: answers.techStack })] }) })), _jsx(GutterLine, { children: _jsxs(Text, { children: [_jsx(Text, { color: C.label, children: " Features: " }), _jsx(Text, { color: C.inputed, children: answers.coreFeatures.length > 0 ? answers.coreFeatures.join(", ") : "N/A" })] }) }), answers.nonGoals.length > 0 && (_jsx(GutterLine, { children: _jsxs(Text, { children: [_jsx(Text, { color: C.label, children: " Non-goals: " }), _jsx(Text, { color: C.inputed, children: answers.nonGoals.join(", ") })] }) })), _jsx(GutterLine, { children: _jsx(Text, { children: " " }) }), _jsx(GutterLine, { children: _jsx(Text, { bold: true, color: C.sapphire, children: "Files to generate" }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: [_jsx(Text, { color: C.label, children: " Files: " }), _jsx(Text, { color: C.inputed, children: filesToGenerate.join(", ") })] }) }), conflicts.length > 0 && (_jsx(GutterLine, { children: _jsxs(Text, { color: C.peach, children: [_jsx(Text, { color: C.label, children: " ⚠
|
|
52
|
+
return (_jsxs(_Fragment, { children: [_jsx(GutterLine, { children: _jsx(Text, { bold: true, color: C.sapphire, children: "Project Info" }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: [_jsx(Text, { color: C.label, children: " Name: " }), _jsx(Text, { color: C.inputed, children: answers.projectName || "untitled" })] }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: [_jsx(Text, { color: C.label, children: " Description: " }), _jsx(Text, { color: C.inputed, children: answers.description || "N/A" })] }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: [_jsx(Text, { color: C.label, children: " Package manager: " }), _jsx(Text, { color: C.inputed, children: answers.packageManager }), _jsx(Text, { color: C.label, children: " | License: " }), _jsx(Text, { color: C.inputed, children: answers.license })] }) }), _jsx(GutterLine, { children: _jsx(Text, { children: " " }) }), _jsx(GutterLine, { children: _jsx(Text, { bold: true, color: C.sapphire, children: "Stack & Style" }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: [_jsx(Text, { color: C.label, children: " Language: " }), _jsx(Text, { color: C.inputed, children: answers.language || "N/A" }), _jsx(Text, { color: C.label, children: " | Framework: " }), _jsx(Text, { color: C.inputed, children: answers.framework || "N/A" })] }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: [_jsx(Text, { color: C.label, children: " Code style: " }), _jsx(Text, { color: C.inputed, children: codeStyleDisplay })] }) }), _jsx(GutterLine, { children: _jsx(Text, { children: " " }) }), _jsx(GutterLine, { children: _jsx(Text, { bold: true, color: C.sapphire, children: "Build & Test" }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: [_jsx(Text, { color: C.label, children: " Build: " }), _jsx(Text, { color: C.inputed, children: answers.buildCommand || "N/A" }), _jsx(Text, { color: C.label, children: " | Test: " }), _jsx(Text, { color: C.inputed, children: answers.testCommand || "N/A" })] }) }), (answers.typecheckCommand || answers.lintCommand) && (_jsx(GutterLine, { children: _jsxs(Text, { children: [_jsx(Text, { color: C.label, children: " Typecheck: " }), _jsx(Text, { color: C.inputed, children: answers.typecheckCommand || "N/A" }), _jsx(Text, { color: C.label, children: " | Lint: " }), _jsx(Text, { color: C.inputed, children: answers.lintCommand || "N/A" })] }) })), answers.prCommand && (_jsx(GutterLine, { children: _jsxs(Text, { children: [_jsx(Text, { color: C.label, children: " PR: " }), _jsx(Text, { color: C.inputed, children: answers.prCommand })] }) })), _jsx(GutterLine, { children: _jsx(Text, { children: " " }) }), _jsx(GutterLine, { children: _jsx(Text, { bold: true, color: C.sapphire, children: "Architecture" }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: [_jsx(Text, { color: C.label, children: " Architecture: " }), _jsx(Text, { color: C.inputed, children: answers.architecture || "N/A" })] }) }), _jsx(GutterLine, { children: _jsx(Text, { children: " " }) }), _jsx(GutterLine, { children: _jsx(Text, { bold: true, color: C.sapphire, children: "Product Context" }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: [_jsx(Text, { color: C.label, children: " Problem: " }), _jsx(Text, { color: C.inputed, children: answers.problem || "N/A" })] }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: [_jsx(Text, { color: C.label, children: " Users: " }), _jsx(Text, { color: C.inputed, children: answers.users || "N/A" })] }) }), answers.techStack && (_jsx(GutterLine, { children: _jsxs(Text, { children: [_jsx(Text, { color: C.label, children: " Tech stack: " }), _jsx(Text, { color: C.inputed, children: answers.techStack })] }) })), _jsx(GutterLine, { children: _jsxs(Text, { children: [_jsx(Text, { color: C.label, children: " Features: " }), _jsx(Text, { color: C.inputed, children: answers.coreFeatures.length > 0 ? answers.coreFeatures.join(", ") : "N/A" })] }) }), answers.nonGoals.length > 0 && (_jsx(GutterLine, { children: _jsxs(Text, { children: [_jsx(Text, { color: C.label, children: " Non-goals: " }), _jsx(Text, { color: C.inputed, children: answers.nonGoals.join(", ") })] }) })), _jsx(GutterLine, { children: _jsx(Text, { children: " " }) }), _jsx(GutterLine, { children: _jsx(Text, { bold: true, color: C.sapphire, children: "Files to generate" }) }), _jsx(GutterLine, { children: _jsxs(Text, { children: [_jsx(Text, { color: C.label, children: " Files: " }), _jsx(Text, { color: C.inputed, children: filesToGenerate.join(", ") })] }) }), conflicts.length > 0 && (_jsxs(_Fragment, { children: [_jsx(GutterLine, { children: _jsxs(Text, { color: C.peach, children: [_jsx(Text, { color: C.label, children: " ⚠ Already exist (kept as-is, new render goes to *.new): " }), _jsx(Text, { color: C.inputed, children: conflicts.join(", ") })] }) }), _jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: " Existing files are never overwritten." }) })] })), _jsx(GutterLine, { children: _jsx(Text, { children: " " }) }), _jsxs(GutterLine, { children: [_jsx(Text, { children: "Proceed? " }), _jsx(ConfirmInput, { onConfirm: handleConfirm, onCancel: handleCancel })] })] }));
|
|
50
53
|
}
|
|
51
54
|
if (phase === "running") {
|
|
52
55
|
return (_jsx(GutterLine, { children: _jsx(Spinner, { label: "Generating project files..." }) }));
|
|
@@ -54,6 +57,6 @@ export default function Generation({ answers, onComplete }) {
|
|
|
54
57
|
if (phase === "error") {
|
|
55
58
|
return (_jsx(GutterLine, { children: _jsxs(Text, { color: C.red, children: ["Error generating files: ", errorMsg] }) }));
|
|
56
59
|
}
|
|
57
|
-
return (_jsx(GutterLine, { children: _jsx(Text, { color: C.green, children: "All project files generated successfully." }) }));
|
|
60
|
+
return (_jsxs(_Fragment, { children: [_jsx(GutterLine, { children: _jsx(Text, { color: C.green, children: "All project files generated successfully." }) }), report && report.preserved.length > 0 && (_jsxs(_Fragment, { children: [_jsx(GutterLine, { children: _jsx(Text, { color: C.peach, children: "⚠ Existing files preserved — new versions written alongside:" }) }), _jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: report.preserved.map((p) => p.newFile).join(", ") }) }), _jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: "Run /b3awesome-procedure-setup to back-fill missing procedure sections." }) })] }))] }));
|
|
58
61
|
}
|
|
59
62
|
//# sourceMappingURL=generation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generation.js","sourceRoot":"","sources":["../../src/steps/generation.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"generation.js","sourceRoot":"","sources":["../../src/steps/generation.tsx"],"names":[],"mappings":"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"}
|
package/dist/steps/powerline.js
CHANGED
|
@@ -7,7 +7,7 @@ import { GutteredSelect } from "../components/guttered-select.js";
|
|
|
7
7
|
import { setupPowerline, installPowerlineGlobally, POWERLINE_INSTALL_COMMAND } from "../lib/powerline.js";
|
|
8
8
|
import { initGit } from "../lib/git.js";
|
|
9
9
|
import { scaffoldRelease, ensurePackageJsonReleaseScripts } from "../lib/template.js";
|
|
10
|
-
import { setupSkills } from "../lib/skills.js";
|
|
10
|
+
import { setupSkills, installMattPocockSkills, MP_SKILLS_INSTALL_COMMAND } from "../lib/skills.js";
|
|
11
11
|
import { C } from "../theme.js";
|
|
12
12
|
export default function Powerline({ answers, onComplete }) {
|
|
13
13
|
const [phase, setPhase] = useState("ask-powerline");
|
|
@@ -60,6 +60,10 @@ export default function Powerline({ answers, onComplete }) {
|
|
|
60
60
|
if (skills) {
|
|
61
61
|
setupSkills(targetDir);
|
|
62
62
|
result.skillsCopied = true;
|
|
63
|
+
const mpRes = installMattPocockSkills();
|
|
64
|
+
result.mpSkillsInstalled = mpRes.installed;
|
|
65
|
+
result.mpSkillsInstalledNow = mpRes.installedNow.length;
|
|
66
|
+
result.mpSkillsWarning = mpRes.installed ? undefined : mpRes.reason;
|
|
63
67
|
}
|
|
64
68
|
setSetupResult(result);
|
|
65
69
|
setPhase("done");
|
|
@@ -92,17 +96,19 @@ export default function Powerline({ answers, onComplete }) {
|
|
|
92
96
|
}
|
|
93
97
|
// ── Ask: Skills ──────────────────────────────────────────────────────────────
|
|
94
98
|
if (phase === "ask-skills") {
|
|
95
|
-
return (_jsxs(_Fragment, { children: [wantPowerline && (_jsx(GutterLine, { children: _jsxs(Text, { children: [_jsx(Text, { color: C.label, children: "Powerline: " }), _jsx(Text, { color: C.inputed, children: "yes" })] }) })), wantGit && (_jsx(GutterLine, { children: _jsxs(Text, { children: [_jsx(Text, { color: C.label, children: "Git: " }), _jsx(Text, { color: C.inputed, children: "yes" })] }) })), wantRelease && (_jsx(GutterLine, { children: _jsxs(Text, { children: [_jsx(Text, { color: C.label, children: "Release: " }), _jsx(Text, { color: C.inputed, children: "yes" })] }) })), _jsx(GutterLine, { children: _jsx(Text, { bold: true, children: "Code review skills" }) }), _jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: "Installs /b3awesome-code-review and /b3awesome-code-fix" }) }), _jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: "skills for Claude Code, Codex CLI, and OpenCode." }) }), _jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: "Creates CODE-REVIEW.md and CODE-FIXED.md if missing." }) }), _jsx(GutterLine, { children: _jsx(Text, { children: " " }) }), _jsxs(GutterLine, { children: [_jsx(Text, { bold: true, children: "Set up code review skills? " }), _jsx(ConfirmInput, { onConfirm: () => { setWantSkills(true); runSetup(wantPowerline, powerlineInstall, wantGit, wantRelease, true); }, onCancel: () => { setWantSkills(false); runSetup(wantPowerline, powerlineInstall, wantGit, wantRelease, false); } })] }), _jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: "Shift+Tab prev y/n answer" }) })] }));
|
|
99
|
+
return (_jsxs(_Fragment, { children: [wantPowerline && (_jsx(GutterLine, { children: _jsxs(Text, { children: [_jsx(Text, { color: C.label, children: "Powerline: " }), _jsx(Text, { color: C.inputed, children: "yes" })] }) })), wantGit && (_jsx(GutterLine, { children: _jsxs(Text, { children: [_jsx(Text, { color: C.label, children: "Git: " }), _jsx(Text, { color: C.inputed, children: "yes" })] }) })), wantRelease && (_jsx(GutterLine, { children: _jsxs(Text, { children: [_jsx(Text, { color: C.label, children: "Release: " }), _jsx(Text, { color: C.inputed, children: "yes" })] }) })), _jsx(GutterLine, { children: _jsx(Text, { bold: true, children: "Code review skills" }) }), _jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: "Installs /b3awesome-code-review and /b3awesome-code-fix" }) }), _jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: "skills for Claude Code, Codex CLI, and OpenCode." }) }), _jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: "Creates CODE-REVIEW.md and CODE-FIXED.md if missing." }) }), _jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: "Also ensures the Matt Pocock skill set (wayfinder, grilling," }) }), _jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: "code-review, tdd, ...) is installed globally \u2014 checks first," }) }), _jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: "installs only what's missing. Once per machine." }) }), _jsx(GutterLine, { children: _jsx(Text, { children: " " }) }), _jsxs(GutterLine, { children: [_jsx(Text, { bold: true, children: "Set up code review skills? " }), _jsx(ConfirmInput, { onConfirm: () => { setWantSkills(true); runSetup(wantPowerline, powerlineInstall, wantGit, wantRelease, true); }, onCancel: () => { setWantSkills(false); runSetup(wantPowerline, powerlineInstall, wantGit, wantRelease, false); } })] }), _jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: "Shift+Tab prev y/n answer" }) })] }));
|
|
96
100
|
}
|
|
97
101
|
// ── Running ─────────────────────────────────────────────────────────────────
|
|
98
102
|
if (phase === "running") {
|
|
99
|
-
return (_jsx(GutterLine, { children: _jsx(Spinner, { label: "Running setup tasks..." }) }));
|
|
103
|
+
return (_jsx(GutterLine, { children: _jsx(Spinner, { label: wantSkills ? "Running setup tasks... (skill install may take a minute)" : "Running setup tasks..." }) }));
|
|
100
104
|
}
|
|
101
105
|
// ── Error ───────────────────────────────────────────────────────────────────
|
|
102
106
|
if (phase === "error") {
|
|
103
107
|
return (_jsx(GutterLine, { children: _jsxs(Text, { color: C.red, children: ["Setup error: ", errorMsg] }) }));
|
|
104
108
|
}
|
|
105
109
|
// ── Done ────────────────────────────────────────────────────────────────────
|
|
106
|
-
return (_jsxs(_Fragment, { children: [wantPowerline && powerlineInstall && setupResult.powerlineInstalled && (_jsx(GutterLine, { children: _jsx(Text, { color: C.green, children: "Powerline installed & configured." }) })), wantPowerline && powerlineInstall && !setupResult.powerlineInstalled && (_jsxs(_Fragment, { children: [_jsx(GutterLine, { children: _jsx(Text, { color: C.peach, children: "⚠ Powerline configured, but global install failed." }) }), _jsx(GutterLine, { children: _jsxs(Text, { color: C.overlay1, children: ["Run: ", POWERLINE_INSTALL_COMMAND] }) })] })), wantPowerline && !powerlineInstall && (_jsxs(_Fragment, { children: [_jsx(GutterLine, { children: _jsx(Text, { color: C.green, children: "Powerline configured." }) }), _jsx(GutterLine, { children: _jsxs(Text, { color: C.overlay1, children: ["Run: ", POWERLINE_INSTALL_COMMAND] }) })] })), wantGit && setupResult.gitCommitted && (_jsx(GutterLine, { children: _jsx(Text, { color: C.green, children: "Git repository initialized." }) })), wantGit && !setupResult.gitCommitted && setupResult.gitWarning && (_jsx(GutterLine, { children: _jsxs(Text, { color: C.peach, children: ["⚠ Git: ", setupResult.gitWarning] }) })), wantRelease && setupResult.releaseCreated && (_jsx(GutterLine, { children: _jsxs(Text, { color: C.green, children: ["Release script created.", setupResult.pkgModified ? " package.json updated." : setupResult.pkgCreated ? " package.json created." : ""] }) })), wantRelease && setupResult.releaseSkipped && (_jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: "Release script already exists \u2014 skipped." }) })), wantSkills && setupResult.skillsCopied && (_jsx(GutterLine, { children: _jsx(Text, { color: C.green, children: "Code review skills installed." }) })),
|
|
110
|
+
return (_jsxs(_Fragment, { children: [wantPowerline && powerlineInstall && setupResult.powerlineInstalled && (_jsx(GutterLine, { children: _jsx(Text, { color: C.green, children: "Powerline installed & configured." }) })), wantPowerline && powerlineInstall && !setupResult.powerlineInstalled && (_jsxs(_Fragment, { children: [_jsx(GutterLine, { children: _jsx(Text, { color: C.peach, children: "⚠ Powerline configured, but global install failed." }) }), _jsx(GutterLine, { children: _jsxs(Text, { color: C.overlay1, children: ["Run: ", POWERLINE_INSTALL_COMMAND] }) })] })), wantPowerline && !powerlineInstall && (_jsxs(_Fragment, { children: [_jsx(GutterLine, { children: _jsx(Text, { color: C.green, children: "Powerline configured." }) }), _jsx(GutterLine, { children: _jsxs(Text, { color: C.overlay1, children: ["Run: ", POWERLINE_INSTALL_COMMAND] }) })] })), wantGit && setupResult.gitCommitted && (_jsx(GutterLine, { children: _jsx(Text, { color: C.green, children: "Git repository initialized." }) })), wantGit && !setupResult.gitCommitted && setupResult.gitWarning && (_jsx(GutterLine, { children: _jsxs(Text, { color: C.peach, children: ["⚠ Git: ", setupResult.gitWarning] }) })), wantRelease && setupResult.releaseCreated && (_jsx(GutterLine, { children: _jsxs(Text, { color: C.green, children: ["Release script created.", setupResult.pkgModified ? " package.json updated." : setupResult.pkgCreated ? " package.json created." : ""] }) })), wantRelease && setupResult.releaseSkipped && (_jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: "Release script already exists \u2014 skipped." }) })), wantSkills && setupResult.skillsCopied && (_jsx(GutterLine, { children: _jsx(Text, { color: C.green, children: "Code review skills installed." }) })), wantSkills && setupResult.mpSkillsInstalled && (_jsx(GutterLine, { children: _jsx(Text, { color: C.green, children: setupResult.mpSkillsInstalledNow
|
|
111
|
+
? `Matt Pocock skills installed globally (${setupResult.mpSkillsInstalledNow} added).`
|
|
112
|
+
: "Matt Pocock skills already installed globally." }) })), wantSkills && setupResult.skillsCopied && !setupResult.mpSkillsInstalled && (_jsxs(_Fragment, { children: [_jsx(GutterLine, { children: _jsx(Text, { color: C.peach, children: "⚠ Matt Pocock skills install failed (offline or npx unavailable)." }) }), _jsx(GutterLine, { children: _jsxs(Text, { color: C.overlay1, children: ["Run: ", MP_SKILLS_INSTALL_COMMAND] }) })] })), !wantPowerline && !wantGit && !wantRelease && !wantSkills && (_jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: "No extras configured." }) })), _jsx(GutterLine, { children: _jsx(Text, { color: C.green, bold: true, children: "Setup complete!" }) })] }));
|
|
107
113
|
}
|
|
108
114
|
//# sourceMappingURL=powerline.js.map
|