procedure-cli 1.2.0 → 1.5.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 CHANGED
@@ -92,15 +92,32 @@ Choose a **QuickStart preset** or configure manually:
92
92
  | React Native + Expo | Cross-platform mobile apps |
93
93
  | Go TUI + Bubbletea | Terminal UIs, interactive CLIs, wizard tools (Bubbletea + Bubbles ecosystem) |
94
94
  | Ink TUI | Terminal UIs with Ink + React (Node.js) — includes UI/UX guideline and tech specs docs |
95
+ | Swift iOS (SwiftUI) | Native iOS apps with SwiftUI + Swift concurrency |
95
96
  | Configure manually → | Custom language, framework, and code style |
96
97
 
98
+ **Coming in v1.4** (planned, see [docs/PRD.md](./docs/PRD.md) F-006 / F-008 / F-009):
99
+
100
+ | Preset | Best for |
101
+ |--------|----------|
102
+ | Android (Kotlin + Compose) | Native Android with Jetpack Compose + Material 3 |
103
+ | Flutter | Cross-platform mobile/desktop with Dart + Riverpod |
104
+ | React Native (bare) | Mobile apps without Expo (full native module access) |
105
+ | Ionic + Capacitor | Hybrid mobile apps reusing web codebase |
106
+ | Next.js + Supabase | App Router + RSC + RLS scaffolding |
107
+
97
108
  Build/test/typecheck/lint/PR commands are **auto-derived** from the selected preset or language+framework — no manual entry needed. They are shown as read-only in Step 5 (Generation) before you confirm.
98
109
 
110
+ Test command flag is **stack-aware** (planned v1.4): Vitest/Jest get `-t`, Go gets `-run`, pytest gets `-k`, xcodebuild gets `-only-testing`. The current generic `-- -t "name"` is being replaced. Optional E2E test slot lights up only when `Playwright` is selected as a tech stack chip.
111
+
99
112
  ### 3. Architecture
100
113
  Select from 7 patterns (Monolith, MVC, Feature folders, Hexagonal, Microservices, Event-driven, Monorepo). Architecture notes are auto-generated from the chosen pattern.
101
114
 
115
+ > **Coming in v1.4:** 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".
116
+
102
117
  ### 4. Product Context
103
- Problem statement, target users, tech stack (multi-select, prefilled from Step 2; Bubbletea preset also preselects Lipgloss + Bubbles), core features (multi-select with custom input), non-goals.
118
+ 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.
119
+
120
+ > **Coming in v1.4:** 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).
104
121
 
105
122
  ### 5. Generation
106
123
  Full summary of all collected inputs including auto-derived build commands. Warns about any files that will be overwritten. Confirm to write files or skip.
@@ -111,7 +128,47 @@ Three independent yes/no prompts — each explained before asking:
111
128
  - **Claude Powerline** — live status bar (git branch, context %, cost, active tools); runs via `npx` per session
112
129
  - **Git repository** — `git init` + initial commit with the generated files
113
130
  - **npm release scripts** — creates `~/bin/<project>-release` and adds `release:patch/minor/major` to `package.json`
114
- - **Code review skills** — installs `/b3awesome-code-review` and `/b3awesome-code-fix` 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
131
+ - **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
132
+
133
+ ## Utility Scripts
134
+
135
+ ### `procedure-cli-skills-copy.sh`
136
+
137
+ Standalone script to copy all AI agent skills to an existing project generated by Procedure CLI (useful if the project was created before the skill was available, or if Setup was skipped).
138
+
139
+ **What it does:**
140
+ - Copies `/add-procedure-cli-rule` skill to Claude Code, Codex CLI, and OpenCode
141
+ - Creates required directories if missing
142
+ - Skips existing files (safe — never overwrites)
143
+ - Provides clear feedback for each agent
144
+
145
+ **Setup:**
146
+ ```bash
147
+ # Copy script to home directory
148
+ cp /path/to/procedure-cli/procedure-cli-skills-copy.sh ~
149
+
150
+ # Add alias to ~/.zshrc (or ~/.bashrc)
151
+ echo "alias pcsc='bash ~/procedure-cli-skills-copy.sh'" >> ~/.zshrc
152
+ source ~/.zshrc
153
+ ```
154
+
155
+ **Usage:**
156
+ ```bash
157
+ cd /path/to/your-project
158
+ pcsc
159
+
160
+ # Or explicitly specify destination
161
+ ~/procedure-cli-skills-copy.sh /path/to/your-project
162
+ ```
163
+
164
+ **Output:**
165
+ ```
166
+ 📦 Copying add-procedure-cli-rule skill to .
167
+ ✅ Claude Code: .claude/skills/add-procedure-cli-rule/SKILL.md
168
+ ✅ Codex CLI: .codex/skills/add-procedure-cli-rule/SKILL.md
169
+ ✅ OpenCode: .opencode/commands/add-procedure-cli-rule.md
170
+ ✨ Done!
171
+ ```
115
172
 
116
173
  ## UI Components
117
174
 
@@ -0,0 +1,17 @@
1
+ {
2
+ "codeStyle": [
3
+ "ktlint enforced, no exceptions",
4
+ "Jetpack Compose with Material 3 design tokens",
5
+ "MVVM: Composables consume StateFlow<UiState>, ViewModel handles intents",
6
+ "Kotlin coroutines + Flow for async — no callbacks",
7
+ "Immutable data classes for UiState, sealed classes/interfaces for events",
8
+ "Repository pattern: ViewModel depends on interfaces, never on Room/Retrofit directly"
9
+ ],
10
+ "buildCommand": "./gradlew assembleDebug",
11
+ "testCommand": "./gradlew test",
12
+ "typecheckCommand": "./gradlew compileDebugKotlin",
13
+ "lintCommand": "./gradlew ktlintCheck",
14
+ "architectureNotes": "",
15
+ "framework": "Jetpack Compose",
16
+ "language": "Kotlin"
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "codeStyle": [
3
+ "Effective Dart conventions, dart format enforced",
4
+ "Riverpod for state management — single source of truth per feature",
5
+ "Immutable models with freezed, json_serializable for DTOs",
6
+ "Widgets are pure functions of state — no business logic in build()",
7
+ "lib/features/<name>/ layout: presentation/, application/, domain/, data/",
8
+ "Async work in Notifier/AsyncNotifier methods, never inside widgets"
9
+ ],
10
+ "buildCommand": "flutter build apk",
11
+ "testCommand": "flutter test",
12
+ "typecheckCommand": "flutter analyze",
13
+ "lintCommand": "dart format --set-exit-if-changed .",
14
+ "architectureNotes": "",
15
+ "framework": "Flutter",
16
+ "language": "Dart"
17
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "codeStyle": [
3
+ "TypeScript strict mode",
4
+ "Ionic components for cross-platform UI — never raw HTML buttons in pages",
5
+ "Capacitor plugins wrapped in service classes, never called directly from components",
6
+ "Platform checks via Capacitor.getPlatform() — guard native-only code paths",
7
+ "Same web codebase ships to web, iOS, and Android — no platform forks in app code"
8
+ ],
9
+ "buildCommand": "ionic build && npx cap sync",
10
+ "testCommand": "vitest",
11
+ "typecheckCommand": "tsc --noEmit",
12
+ "lintCommand": "eslint src/",
13
+ "architectureNotes": "",
14
+ "framework": "Ionic",
15
+ "language": "TypeScript"
16
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "codeStyle": [
3
+ "TypeScript strict mode",
4
+ "Functional components with hooks — no class components",
5
+ "StyleSheet.create for styles, no inline objects in render",
6
+ "Platform-specific code via Platform.select or .ios.tsx / .android.tsx",
7
+ "Native modules wrapped in TypeScript-typed bridges, never imported raw",
8
+ "Lists use FlatList/SectionList — never .map() over large arrays"
9
+ ],
10
+ "buildCommand": "react-native bundle --platform ios --dev false --entry-file index.js --bundle-output ios/main.jsbundle",
11
+ "testCommand": "jest",
12
+ "typecheckCommand": "tsc --noEmit",
13
+ "lintCommand": "eslint .",
14
+ "architectureNotes": "",
15
+ "framework": "React Native",
16
+ "language": "TypeScript"
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "codeStyle": [
3
+ "Swift API Design Guidelines — clear, concise naming",
4
+ "SwiftUI declarative views, MVVM architecture",
5
+ "Swift concurrency (async/await, actors) — no completion handlers",
6
+ "Access control: internal by default, explicit public/private",
7
+ "Prefer value types (struct/enum) over reference types (class)",
8
+ "Guard-let for early exits, avoid nested optionals"
9
+ ],
10
+ "buildCommand": "xcodebuild -scheme App build",
11
+ "testCommand": "xcodebuild -scheme App test",
12
+ "typecheckCommand": "swift build",
13
+ "lintCommand": "swiftlint",
14
+ "architectureNotes": "",
15
+ "framework": "SwiftUI",
16
+ "language": "Swift"
17
+ }
package/dist/app.js CHANGED
@@ -30,9 +30,12 @@ const EMPTY_ANSWERS = {
30
30
  language: "",
31
31
  buildCommand: "",
32
32
  testCommand: "",
33
+ testCommandFiltered: "",
34
+ e2eTestCommand: "",
33
35
  typecheckCommand: "",
34
36
  lintCommand: "",
35
37
  prCommand: "",
38
+ hasReleaseScript: false,
36
39
  architecture: "",
37
40
  architectureNotes: "",
38
41
  problem: "",
@@ -135,6 +138,20 @@ export default function App({ dirEntries }) {
135
138
  // After Stack & Style (step 1), adapt derived commands to selected package manager
136
139
  const adapted = currentStep === 1 ? adaptCommands(partial, answers.packageManager) : partial;
137
140
  const merged = { ...answers, ...adapted };
141
+ // Release script section in CLAUDE.md is opt-in: only when the project uses a JS package manager
142
+ // AND the language is TypeScript/JavaScript. Go/Swift/Python projects skip the npm-style release block.
143
+ const jsManagers = new Set(["npm", "pnpm", "yarn", "bun"]);
144
+ const lang = (merged.language || "").toLowerCase();
145
+ merged.hasReleaseScript =
146
+ jsManagers.has(merged.packageManager) && (lang.includes("typescript") || lang.includes("javascript"));
147
+ // After Product Context (step 3): light up the optional E2E test slot when the user picks a Playwright/Cypress chip.
148
+ if (currentStep === 3) {
149
+ const stack = (merged.techStack || "").toLowerCase();
150
+ if (stack.includes("playwright"))
151
+ merged.e2eTestCommand = "playwright test";
152
+ else if (stack.includes("cypress"))
153
+ merged.e2eTestCommand = "cypress run";
154
+ }
138
155
  setAnswers(merged);
139
156
  if (currentStep < STEP_NAMES.length - 1) {
140
157
  setCurrentStep(currentStep + 1);
@@ -169,7 +186,7 @@ export default function App({ dirEntries }) {
169
186
  }
170
187
  return { name, status: "pending" };
171
188
  });
172
- const activeContent = (_jsxs(_Fragment, { children: [currentStep === 0 && (_jsx(ProjectInfo, { onComplete: handleStepComplete })), currentStep === 1 && (_jsx(StackStyle, { onComplete: handleStepComplete })), currentStep === 2 && (_jsx(Architecture, { onComplete: handleStepComplete })), currentStep === 3 && (_jsx(ProductContext, { initialValues: answers, onComplete: handleStepComplete })), currentStep === 4 && (_jsx(Generation, { answers: answers, onComplete: handleStepComplete })), currentStep === 5 && (_jsx(Powerline, { answers: answers, onComplete: handleStepComplete }))] }));
189
+ const activeContent = (_jsxs(_Fragment, { children: [currentStep === 0 && (_jsx(ProjectInfo, { onComplete: handleStepComplete })), currentStep === 1 && (_jsx(StackStyle, { onComplete: handleStepComplete })), currentStep === 2 && (_jsx(Architecture, { language: answers.language, framework: answers.framework, onComplete: handleStepComplete })), currentStep === 3 && (_jsx(ProductContext, { initialValues: answers, onComplete: handleStepComplete })), currentStep === 4 && (_jsx(Generation, { answers: answers, onComplete: handleStepComplete })), currentStep === 5 && (_jsx(Powerline, { answers: answers, onComplete: handleStepComplete }))] }));
173
190
  return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(Banner, {}), _jsx(Timeline, { steps: steps, children: activeContent })] }));
174
191
  }
175
192
  //# sourceMappingURL=app.js.map
package/dist/app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export interface PatternOption {
2
+ label: string;
3
+ value: string;
4
+ }
5
+ export declare const ALL_PATTERNS: PatternOption[];
6
+ /**
7
+ * Returns options ordered with the recommended pattern first, plus the
8
+ * recommended pattern itself. UI/CLI/mobile-UI stacks have HTTP-centric
9
+ * patterns hidden so a Bubbletea project never sees "MVC" as the first option.
10
+ */
11
+ export declare function resolveOptions(language: string, framework: string): {
12
+ options: PatternOption[];
13
+ preselected: string;
14
+ };
15
+ export declare function resolveNotes(framework: string, pattern: string): string;
@@ -0,0 +1,142 @@
1
+ export const ALL_PATTERNS = [
2
+ { label: "Elm Architecture — Model → Update → View (TUI/CLI)", value: "Elm Architecture" },
3
+ { label: "Wizard / Step state-machine — Multi-step flow with shell-owned state", value: "Wizard / Step state-machine" },
4
+ { label: "MVVM — Model-View-ViewModel (declarative UI: SwiftUI, Compose)", value: "MVVM" },
5
+ { label: "App Router + RSC — Server Components + Server Actions (Next.js 14+)", value: "App Router + RSC" },
6
+ { label: "MVC — Model-View-Controller separation (HTTP services)", value: "MVC" },
7
+ { label: "Layered — Presentation > Business > Data layers", value: "Layered" },
8
+ { label: "Hexagonal — Ports and adapters, domain at the core", value: "Hexagonal" },
9
+ { label: "Feature folders — Co-located components, hooks, utils per feature", value: "Feature folders" },
10
+ { label: "Modular monolith — Single deploy, strict module boundaries", value: "Modular monolith" },
11
+ { label: "Microservices — Independent deployable services", value: "Microservices" },
12
+ { label: "Serverless — Function-based, event-driven", value: "Serverless" },
13
+ { label: "Monorepo — Multiple packages in one repository", value: "Monorepo" },
14
+ ];
15
+ const PAIR_NOTES = {
16
+ Bubbletea: {
17
+ "Elm Architecture": "Pure Model → Update → View loop. State lives in the Model, mutations go through Update returning (Model, Cmd). View renders Model with Lipgloss. Side effects are tea.Cmd values, never inline calls.",
18
+ "Wizard / Step state-machine": "Top-level Bubbletea Model holds the shared answers struct + currentStep index. Each step is a sub-Model with its own Update/View; the parent forwards messages and merges partial answers when the step signals completion. Steps never reach into the parent Model directly.",
19
+ "Feature folders": "Group screens with their own model/update/view files under internal/screens/<name>/. Shared widgets in internal/components/.",
20
+ },
21
+ Ink: {
22
+ "Wizard / Step state-machine": "Shell component (app.tsx) owns the canonical state. Each step in src/steps/ is a self-contained component that receives onComplete(partial: Partial<Answers>) and reports its outputs through that callback — steps never read shell state directly except via explicit props. Shell merges the partial and routes to the next step. Pure logic in src/lib/, reusable UI in src/components/.",
23
+ "Elm Architecture": "useReducer-based Model → Update → View. State in a single reducer, components dispatch actions, side effects in useEffect. Mirrors Bubbletea's discipline in a React idiom.",
24
+ "Feature folders": "Co-locate screens under src/screens/<feature>/ with their reducer, types, and view. Reusable primitives in src/components/.",
25
+ },
26
+ SwiftUI: {
27
+ MVVM: "Views are pure functions of state. ViewModel (ObservableObject / @Observable) owns business logic and async work. Models are value types (struct/enum). Avoid putting state in views beyond @State for ephemeral UI.",
28
+ "Feature folders": "Group each feature under Features/<Name>/ with its View, ViewModel, and Model files. Shared utilities in Shared/.",
29
+ },
30
+ UIKit: {
31
+ MVVM: "ViewControllers stay thin — they bind to ViewModels. ViewModels drive UI via Combine publishers or async streams. Models are value types where possible.",
32
+ MVC: "Classic Cocoa MVC: ViewController orchestrates Views and Model. Keep controllers small; extract networking and persistence into services.",
33
+ },
34
+ "Jetpack Compose": {
35
+ MVVM: "Composables are pure functions of UiState. ViewModel exposes StateFlow<UiState> and handles intents via methods. Use unidirectional data flow — never mutate state from inside a Composable.",
36
+ "Feature folders": "Group each feature under feature/<name>/ with ui/, domain/, data/ subpackages. Shared building blocks in core/.",
37
+ },
38
+ Flutter: {
39
+ MVVM: "Widgets are pure functions of state. ViewModel (Riverpod/Bloc Notifier) owns logic and async work. Models are immutable (freezed). Single source of truth flows down through providers.",
40
+ "Feature folders": "Group each feature under lib/features/<name>/ with presentation/, application/, domain/, data/ layers. Shared code in lib/core/.",
41
+ },
42
+ "Next.js": {
43
+ "App Router + RSC": "Default to Server Components for data fetching and rendering. Drop to Client Components only for interactivity. Use Server Actions for mutations. Route Handlers (route.ts) only when you need a public HTTP boundary. Co-locate loading.tsx, error.tsx, and route segments.",
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
+ MVC: "Use only for legacy Pages Router projects — for App Router, prefer 'App Router + RSC'.",
46
+ },
47
+ React: {
48
+ "Feature folders": "Each feature owns its components, hooks, state, and tests under src/features/<name>/. Shared primitives in src/components/.",
49
+ },
50
+ Vue: {
51
+ "Feature folders": "Each feature owns its views, composables, and stores under src/features/<name>/. Shared composables in src/composables/.",
52
+ },
53
+ Svelte: {
54
+ "Feature folders": "Each feature owns its routes, stores, and components under src/lib/features/<name>/.",
55
+ },
56
+ FastAPI: {
57
+ Layered: "routers/ (HTTP) → services/ (business) → repositories/ (data). Pydantic schemas at the boundary. No layer skipping.",
58
+ Hexagonal: "Domain at the core (pure Python), adapters for HTTP (FastAPI routers) and persistence (SQLAlchemy). Dependency inversion via FastAPI's Depends.",
59
+ },
60
+ Django: {
61
+ MVC: "Django calls it MVT but the spirit is MVC: Models (ORM) + Views (controllers) + Templates. Keep business logic out of views — push into model methods or service modules.",
62
+ },
63
+ "net/http": {
64
+ MVC: "Handlers parse requests and call services. Services hold business logic. Repositories own persistence. Keep handlers thin.",
65
+ Hexagonal: "Domain interfaces in internal/, HTTP adapters in cmd/api/, persistence adapters in internal/storage/. Wire via main.go.",
66
+ },
67
+ };
68
+ const FALLBACK_NOTES = {
69
+ "Elm Architecture": "Model holds state. Update is a pure (state, msg) → (state, cmd) function. View is a pure (state) → UI function. Side effects flow through commands.",
70
+ "Wizard / Step state-machine": "A shell component owns the canonical state. Each step is self-contained and reports its outputs through an onComplete(partial) callback — steps never read shell state directly. Shell merges the partial and routes to the next step. Suitable for multi-step wizards, onboarding flows, and CLI scaffolders.",
71
+ MVVM: "View is a pure function of state. ViewModel owns logic and async work. Model is plain data. Unidirectional flow only.",
72
+ "App Router + RSC": "Server Components by default; client only when interactive. Server Actions for mutations.",
73
+ MVC: "Controllers handle requests, models own data, views render. Keep business logic in models or services.",
74
+ Layered: "Strict dependency direction: Presentation → Business → Data. No skipping layers.",
75
+ Hexagonal: "Domain at the core. Ports define what the domain needs; adapters implement them for HTTP, DB, etc.",
76
+ "Feature folders": "Each feature owns its components, hooks, and tests. Shared code in shared/ or lib/.",
77
+ "Modular monolith": "Define explicit module boundaries with public APIs. No direct cross-module database access.",
78
+ Microservices: "Each service owns its data store. Communicate via APIs or message queues.",
79
+ Serverless: "One function per endpoint. Stateless. Use managed services for persistence.",
80
+ Monorepo: "Shared packages in packages/, apps in apps/. Workspace protocol for cross-references.",
81
+ };
82
+ /**
83
+ * Returns options ordered with the recommended pattern first, plus the
84
+ * recommended pattern itself. UI/CLI/mobile-UI stacks have HTTP-centric
85
+ * patterns hidden so a Bubbletea project never sees "MVC" as the first option.
86
+ */
87
+ export function resolveOptions(language, framework) {
88
+ const fw = (framework || "").toLowerCase();
89
+ const lang = (language || "").toLowerCase();
90
+ const recommended = (() => {
91
+ if (fw.includes("ink"))
92
+ return "Wizard / Step state-machine";
93
+ if (fw.includes("bubbletea"))
94
+ return "Elm Architecture";
95
+ if (fw.includes("swiftui") || fw.includes("compose") || fw.includes("flutter"))
96
+ return "MVVM";
97
+ if (fw.includes("uikit"))
98
+ return "MVVM";
99
+ if (fw.includes("next"))
100
+ return "App Router + RSC";
101
+ if (fw.includes("react") || fw.includes("vue") || fw.includes("svelte"))
102
+ return "Feature folders";
103
+ if (fw.includes("fastapi") || fw.includes("flask"))
104
+ return "Layered";
105
+ if (fw.includes("django") || fw.includes("rails"))
106
+ return "MVC";
107
+ if (fw.includes("net/http") || fw.includes("express") || fw.includes("fastify"))
108
+ return "MVC";
109
+ if (lang.includes("go"))
110
+ return "MVC";
111
+ return "Feature folders";
112
+ })();
113
+ const hidden = new Set();
114
+ if (fw.includes("bubbletea") ||
115
+ fw.includes("ink") ||
116
+ fw.includes("swiftui") ||
117
+ fw.includes("compose") ||
118
+ fw.includes("flutter") ||
119
+ fw.includes("uikit")) {
120
+ hidden.add("MVC");
121
+ hidden.add("Microservices");
122
+ hidden.add("Serverless");
123
+ hidden.add("Layered");
124
+ }
125
+ if (fw.includes("next") || fw.includes("react") || fw.includes("vue") || fw.includes("svelte")) {
126
+ hidden.add("MVC");
127
+ }
128
+ const filtered = ALL_PATTERNS.filter((p) => !hidden.has(p.value));
129
+ const ordered = [
130
+ ...filtered.filter((p) => p.value === recommended),
131
+ ...filtered.filter((p) => p.value !== recommended),
132
+ ];
133
+ return { options: ordered, preselected: recommended };
134
+ }
135
+ export function resolveNotes(framework, pattern) {
136
+ const pairKey = Object.keys(PAIR_NOTES).find((k) => k.toLowerCase() === (framework || "").toLowerCase());
137
+ if (pairKey && PAIR_NOTES[pairKey]?.[pattern]) {
138
+ return PAIR_NOTES[pairKey][pattern];
139
+ }
140
+ return FALLBACK_NOTES[pattern] ?? "";
141
+ }
142
+ //# sourceMappingURL=architecture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"architecture.js","sourceRoot":"","sources":["../../src/lib/architecture.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,8 @@ import { ensureDir, resolveTemplatePath } from './fs.js';
8
8
  export function setupSkills(targetDir) {
9
9
  const reviewSkillSrc = resolveTemplatePath('skills/b3awesome-code-review/SKILL.md');
10
10
  const fixSkillSrc = resolveTemplatePath('skills/b3awesome-code-fix/SKILL.md');
11
+ const addRuleSkillSrc = resolveTemplatePath('skills/add-procedure-cli-rule/SKILL.md');
12
+ const addRuleOpencodeSrc = resolveTemplatePath('skills/add-procedure-cli-rule/opencode.md');
11
13
  const archiveScriptSrc = resolveTemplatePath('skills/scripts/archive-reviews.sh');
12
14
  const reviewTemplateSrc = resolveTemplatePath('skills/assets/CODE-REVIEW.template.md');
13
15
  const fixTemplateSrc = resolveTemplatePath('skills/assets/CODE-FIXED.template.md');
@@ -15,10 +17,13 @@ export function setupSkills(targetDir) {
15
17
  const skillDests = [
16
18
  { src: reviewSkillSrc, dest: resolve(targetDir, '.claude/skills/b3awesome-code-review/SKILL.md') },
17
19
  { src: fixSkillSrc, dest: resolve(targetDir, '.claude/skills/b3awesome-code-fix/SKILL.md') },
20
+ { src: addRuleSkillSrc, dest: resolve(targetDir, '.claude/skills/add-procedure-cli-rule/SKILL.md') },
18
21
  { src: reviewSkillSrc, dest: resolve(targetDir, '.codex/skills/b3awesome-code-review/SKILL.md') },
19
22
  { src: fixSkillSrc, dest: resolve(targetDir, '.codex/skills/b3awesome-code-fix/SKILL.md') },
23
+ { src: addRuleSkillSrc, dest: resolve(targetDir, '.codex/skills/add-procedure-cli-rule/SKILL.md') },
20
24
  { src: reviewSkillSrc, dest: resolve(targetDir, '.opencode/commands/b3awesome-code-review.md') },
21
25
  { src: fixSkillSrc, dest: resolve(targetDir, '.opencode/commands/b3awesome-code-fix.md') },
26
+ { src: addRuleOpencodeSrc, dest: resolve(targetDir, '.opencode/commands/add-procedure-cli-rule.md') },
22
27
  ];
23
28
  for (const { src, dest } of skillDests) {
24
29
  if (!existsSync(dest)) {
@@ -1 +1 @@
1
- {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/lib/skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEzD;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,SAAiB;IAC3C,MAAM,cAAc,GAAG,mBAAmB,CAAC,uCAAuC,CAAC,CAAC;IACpF,MAAM,WAAW,GAAG,mBAAmB,CAAC,oCAAoC,CAAC,CAAC;IAC9E,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,mCAAmC,CAAC,CAAC;IAClF,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,uCAAuC,CAAC,CAAC;IACvF,MAAM,cAAc,GAAG,mBAAmB,CAAC,sCAAsC,CAAC,CAAC;IAEnF,wFAAwF;IACxF,MAAM,UAAU,GAAG;QACjB,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,+CAA+C,CAAC,EAAE;QAClG,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,4CAA4C,CAAC,EAAE;QAC5F,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,8CAA8C,CAAC,EAAE;QACjG,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,2CAA2C,CAAC,EAAE;QAC3F,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,6CAA6C,CAAC,EAAE;QAChG,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,0CAA0C,CAAC,EAAE;KAC3F,CAAC;IAEF,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,UAAU,EAAE,CAAC;QACvC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,6DAA6D;IAC7D,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;IACxD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,SAAS,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IACpD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,SAAS,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,mCAAmC;IACnC,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,4BAA4B,CAAC,CAAC;IACrE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,SAAS,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;QACzC,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,GAAW,EAAE,IAAY;IAC1C,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACzB,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/lib/skills.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,24 @@ import { resolve, dirname } from 'node:path';
3
3
  import Handlebars from 'handlebars';
4
4
  import { ensureDir, resolveTemplatePath, homeBinPath } from './fs.js';
5
5
  Handlebars.registerHelper('eq', (a, b) => a === b);
6
+ /**
7
+ * Case-insensitive substring check. Works for both strings and arrays.
8
+ * Used to gate optional CLAUDE.md sections on tech-stack chip selections,
9
+ * e.g. {{#contains techStack "Supabase"}}…{{/contains}}.
10
+ */
11
+ Handlebars.registerHelper('contains', function (haystack, needle, options) {
12
+ const target = String(needle ?? '').toLowerCase();
13
+ if (!target)
14
+ return options.inverse(this);
15
+ let found = false;
16
+ if (Array.isArray(haystack)) {
17
+ found = haystack.some((item) => String(item).toLowerCase().includes(target));
18
+ }
19
+ else if (typeof haystack === 'string') {
20
+ found = haystack.toLowerCase().includes(target);
21
+ }
22
+ return found ? options.fn(this) : options.inverse(this);
23
+ });
6
24
  export function renderTemplate(templatePath, data) {
7
25
  const source = readFileSync(templatePath, 'utf-8');
8
26
  const template = Handlebars.compile(source);
@@ -22,6 +40,17 @@ const TEMPLATE_MAP = [
22
40
  { template: '.env.example.hbs', output: '.env.example' },
23
41
  { template: 'gitignore.hbs', output: '.gitignore' },
24
42
  ];
43
+ const DEPLOY_CHIPS = ['Vercel', 'Fly.io', 'Railway', 'Cloudflare'];
44
+ function pickDeployTarget(techStack) {
45
+ if (!techStack)
46
+ return null;
47
+ const stack = techStack.toLowerCase();
48
+ for (const chip of DEPLOY_CHIPS) {
49
+ if (stack.includes(chip.toLowerCase()))
50
+ return chip;
51
+ }
52
+ return null;
53
+ }
25
54
  export const INK_DOC_FILES = [
26
55
  { src: 'ink-tui/INK-TUI-UI-UX-GUIDELINE.md', dest: 'docs/INK-TUI-UI-UX-GUIDELINE.md' },
27
56
  { src: 'ink-tui/INK-TUI-TECH-SPECS.md', dest: 'docs/INK-TUI-TECH-SPECS.md' },
@@ -35,6 +64,9 @@ export function checkConflicts(targetDir, data) {
35
64
  if (data?.framework === 'Ink') {
36
65
  allOutputs.push(...INK_DOC_FILES.map((f) => f.dest));
37
66
  }
67
+ if (pickDeployTarget(data?.techStack)) {
68
+ allOutputs.push('deployment/00-README.md');
69
+ }
38
70
  return allOutputs.filter((f) => existsSync(resolve(targetDir, f)));
39
71
  }
40
72
  export function copyInkDocs(targetDir) {
@@ -54,6 +86,15 @@ export function scaffoldAll(targetDir, data) {
54
86
  if (data.framework === 'Ink') {
55
87
  copyInkDocs(targetDir);
56
88
  }
89
+ const deployTarget = pickDeployTarget(data.techStack);
90
+ if (deployTarget) {
91
+ const templatePath = resolveTemplatePath('deployment/00-README.md.hbs');
92
+ const outputPath = resolve(targetDir, 'deployment/00-README.md');
93
+ writeTemplate(templatePath, outputPath, {
94
+ ...data,
95
+ deployTarget,
96
+ });
97
+ }
57
98
  }
58
99
  export function checkReleaseConflicts(projectName, targetDir) {
59
100
  const scriptPath = homeBinPath(`${projectName}-release`);
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/lib/template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/lib/template.ts"],"names":[],"mappings":"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"}
@@ -27,9 +27,12 @@ export interface WizardAnswers {
27
27
  language: string;
28
28
  buildCommand: string;
29
29
  testCommand: string;
30
+ testCommandFiltered: string;
31
+ e2eTestCommand: string;
30
32
  typecheckCommand: string;
31
33
  lintCommand: string;
32
34
  prCommand: string;
35
+ hasReleaseScript: boolean;
33
36
  architecture: string;
34
37
  architectureNotes: string;
35
38
  problem: string;
@@ -1,6 +1,8 @@
1
1
  import type { WizardAnswers } from "../lib/types.js";
2
2
  interface Props {
3
+ language?: string;
4
+ framework?: string;
3
5
  onComplete: (answers: Partial<WizardAnswers>) => void;
4
6
  }
5
- export default function Architecture({ onComplete }: Props): import("react/jsx-runtime").JSX.Element;
7
+ export default function Architecture({ language, framework, onComplete }: Props): import("react/jsx-runtime").JSX.Element;
6
8
  export {};