@hopla/claude-setup 1.2.9 → 1.3.1

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
@@ -4,15 +4,29 @@ Hopla team agentic coding system for Claude Code. Installs global rules and comm
4
4
 
5
5
  ## Install
6
6
 
7
+ ### Full install — for the implementer (Julio)
8
+
7
9
  ```bash
8
10
  npm install -g @hopla/claude-setup
9
11
  claude-setup
10
12
  ```
11
13
 
14
+ Installs all commands: planning + execution + review.
15
+
16
+ ### Planning-only install — for the planner/non-technical role (Robert)
17
+
18
+ ```bash
19
+ npm install -g @hopla/claude-setup
20
+ claude-setup --planning
21
+ ```
22
+
23
+ Installs only planning commands: `init-project`, `prime`, `create-prd`, `plan-feature`, `review-plan`, `git-commit`, `git-pr`. No execution or review commands. No bash permission prompts during planning.
24
+
12
25
  To overwrite existing files without prompting:
13
26
 
14
27
  ```bash
15
28
  claude-setup --force
29
+ claude-setup --planning --force
16
30
  ```
17
31
 
18
32
  ## Update
package/cli.js CHANGED
@@ -7,6 +7,7 @@ import readline from "readline";
7
7
 
8
8
  const FORCE = process.argv.includes("--force");
9
9
  const UNINSTALL = process.argv.includes("--uninstall");
10
+ const PLANNING = process.argv.includes("--planning");
10
11
  const VERSION = process.argv.includes("--version") || process.argv.includes("-v");
11
12
 
12
13
  if (VERSION) {
@@ -129,8 +130,38 @@ function removeLegacyFiles() {
129
130
  }
130
131
  }
131
132
 
133
+ const PLANNING_COMMANDS = [
134
+ "hopla-init-project.md",
135
+ "hopla-prime.md",
136
+ "hopla-create-prd.md",
137
+ "hopla-plan-feature.md",
138
+ "hopla-review-plan.md",
139
+ "hopla-git-commit.md",
140
+ "hopla-git-pr.md",
141
+ ];
142
+
143
+ function removeExecutionCommands() {
144
+ const planningSet = new Set(PLANNING_COMMANDS);
145
+ const removed = [];
146
+ if (!fs.existsSync(COMMANDS_DIR)) return;
147
+ for (const file of fs.readdirSync(COMMANDS_DIR)) {
148
+ if (file.startsWith("hopla-") && !planningSet.has(file)) {
149
+ fs.rmSync(path.join(COMMANDS_DIR, file));
150
+ removed.push(file);
151
+ }
152
+ }
153
+ if (removed.length > 0) {
154
+ log(`${CYAN}Removing execution commands (planning mode)...${RESET}`);
155
+ for (const file of removed) {
156
+ log(` ${RED}✕${RESET} Removed: ~/.claude/commands/${file}`);
157
+ }
158
+ log("");
159
+ }
160
+ }
161
+
132
162
  async function install() {
133
- log(`\n${BOLD}@hopla/claude-setup${RESET} Agentic Coding System\n`);
163
+ const modeLabel = PLANNING ? "Planning Mode (Robert)" : "Full Install";
164
+ log(`\n${BOLD}@hopla/claude-setup${RESET} — Agentic Coding System ${CYAN}[${modeLabel}]${RESET}\n`);
134
165
 
135
166
  // Create directories if needed
136
167
  fs.mkdirSync(CLAUDE_DIR, { recursive: true });
@@ -139,6 +170,9 @@ async function install() {
139
170
  // Remove old non-prefixed commands from previous versions
140
171
  removeLegacyFiles();
141
172
 
173
+ // In planning mode, remove any execution commands left from a previous full install
174
+ if (PLANNING) removeExecutionCommands();
175
+
142
176
  log(`${CYAN}Installing global rules...${RESET}`);
143
177
  await installFile(
144
178
  path.join(FILES_DIR, "CLAUDE.md"),
@@ -147,7 +181,10 @@ async function install() {
147
181
  );
148
182
 
149
183
  log(`\n${CYAN}Installing commands...${RESET}`);
150
- const commandFiles = fs.readdirSync(path.join(FILES_DIR, "commands"));
184
+ const allCommandFiles = fs.readdirSync(path.join(FILES_DIR, "commands"));
185
+ const commandFiles = PLANNING
186
+ ? allCommandFiles.filter((f) => PLANNING_COMMANDS.includes(f))
187
+ : allCommandFiles;
151
188
  for (const file of commandFiles.sort()) {
152
189
  await installFile(
153
190
  path.join(FILES_DIR, "commands", file),
@@ -161,7 +198,11 @@ async function install() {
161
198
  const name = file.replace(".md", "");
162
199
  log(` ${CYAN}/${name}${RESET}`);
163
200
  }
164
- log(`\nRun with ${BOLD}--force${RESET} to overwrite all files without prompting.\n`);
201
+ if (PLANNING) {
202
+ log(`\n${YELLOW}Planning mode:${RESET} Only planning commands installed. Run without ${BOLD}--planning${RESET} for the full set.\n`);
203
+ } else {
204
+ log(`\nRun with ${BOLD}--force${RESET} to overwrite all files without prompting.\n`);
205
+ }
165
206
 
166
207
  await setupPermissions();
167
208
  }
@@ -74,10 +74,8 @@ Ask one topic at a time and wait for the answer before continuing. Adapt follow-
74
74
 
75
75
  First, explore the codebase to understand what's already built:
76
76
 
77
- ```bash
78
- git ls-files | head -60
79
- git log --oneline -10
80
- ```
77
+ Use the Glob tool to list project files (pattern: `**/*`, head_limit: 60).
78
+ Run `git log --oneline -10` to understand recent history.
81
79
 
82
80
  Read key files: entry points, main modules, config files, existing tests.
83
81
 
@@ -42,9 +42,7 @@ Investigate the areas of the codebase relevant to this feature:
42
42
  - Find the entry points that will need to be modified or extended
43
43
  - Identify potential conflicts or dependencies
44
44
 
45
- ```bash
46
- git ls-files | grep -i <relevant-keyword>
47
- ```
45
+ Use the Grep tool to find relevant files (pattern: relevant keyword, case-insensitive).
48
46
 
49
47
  Read the key files in their entirety — not just the parts that seem relevant.
50
48
 
@@ -146,4 +144,4 @@ Before saving the draft, review the plan against these criteria:
146
144
 
147
145
  **Finalize:**
148
146
  1. Rename `.agents/plans/[feature-name].draft.md` → `.agents/plans/[feature-name].md`
149
- 2. Confirm: "✅ Plan saved to `.agents/plans/[feature-name].md`. Run `/hopla-execute .agents/plans/[feature-name].md` to implement it, or `/hopla-git-commit` to save the plan first."
147
+ 2. Confirm: "✅ Plan saved to `.agents/plans/[feature-name].md`. Run `/hopla-git-commit` to commit it, then share with the team to execute with `/hopla-execute .agents/plans/[feature-name].md`."
@@ -6,13 +6,13 @@ Get oriented in this project before doing any work.
6
6
 
7
7
  ## Step 1: Project Structure
8
8
 
9
- ```bash
10
- git ls-files | head -60
11
- ```
9
+ Use the Glob tool to list project files (up to 60):
10
+ - Pattern: `**/*` with head_limit: 60
12
11
 
13
- ```bash
14
- find . -name "CLAUDE.md" -o -name "AGENTS.md" -o -name "README.md" | head -10
15
- ```
12
+ Use the Glob tool to find key config files:
13
+ - `**/CLAUDE.md`
14
+ - `**/AGENTS.md`
15
+ - `**/README.md`
16
16
 
17
17
  ## Step 2: Read Key Files
18
18
 
@@ -31,9 +31,8 @@ git status
31
31
 
32
32
  ## Step 4: Check Pending Work
33
33
 
34
- ```bash
35
- ls .agents/plans/ 2>/dev/null
36
- ```
34
+ Use the Glob tool to check for pending plans:
35
+ - Pattern: `.agents/plans/*.md`
37
36
 
38
37
  If `.agents/plans/` exists, identify:
39
38
  - `.draft.md` files — unfinished drafts waiting for review
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hopla/claude-setup",
3
- "version": "1.2.9",
3
+ "version": "1.3.1",
4
4
  "description": "Hopla team agentic coding system for Claude Code",
5
5
  "type": "module",
6
6
  "bin": {