claude-cli-advanced-starter-pack 1.1.0 → 1.8.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/OVERVIEW.md +5 -1
- package/README.md +241 -132
- package/bin/gtask.js +53 -0
- package/package.json +1 -1
- package/src/cli/menu.js +27 -0
- package/src/commands/explore-mcp/mcp-registry.js +99 -0
- package/src/commands/init.js +306 -77
- package/src/commands/install-panel-hook.js +108 -0
- package/src/commands/install-scripts.js +232 -0
- package/src/commands/install-skill.js +220 -0
- package/src/commands/panel.js +297 -0
- package/src/commands/setup-wizard.js +4 -3
- package/src/commands/test-setup.js +4 -5
- package/src/data/releases.json +164 -0
- package/src/panel/queue.js +188 -0
- package/templates/commands/ask-claude.template.md +118 -0
- package/templates/commands/ccasp-panel.template.md +72 -0
- package/templates/commands/ccasp-setup.template.md +470 -79
- package/templates/commands/create-smoke-test.template.md +186 -0
- package/templates/commands/project-impl.template.md +9 -113
- package/templates/commands/refactor-check.template.md +112 -0
- package/templates/commands/refactor-cleanup.template.md +144 -0
- package/templates/commands/refactor-prep.template.md +192 -0
- package/templates/docs/AI_ARCHITECTURE_CONSTITUTION.template.md +198 -0
- package/templates/docs/DETAILED_GOTCHAS.template.md +347 -0
- package/templates/docs/PHASE-DEV-CHECKLIST.template.md +241 -0
- package/templates/docs/PROGRESS_JSON_TEMPLATE.json +117 -0
- package/templates/docs/background-agent.template.md +264 -0
- package/templates/hooks/autonomous-decision-logger.template.js +207 -0
- package/templates/hooks/branch-merge-checker.template.js +272 -0
- package/templates/hooks/git-commit-tracker.template.js +267 -0
- package/templates/hooks/issue-completion-detector.template.js +205 -0
- package/templates/hooks/panel-queue-reader.template.js +83 -0
- package/templates/hooks/phase-validation-gates.template.js +307 -0
- package/templates/hooks/session-id-generator.template.js +236 -0
- package/templates/hooks/token-usage-monitor.template.js +193 -0
- package/templates/patterns/README.md +129 -0
- package/templates/patterns/l1-l2-orchestration.md +189 -0
- package/templates/patterns/multi-phase-orchestration.md +258 -0
- package/templates/patterns/two-tier-query-pipeline.md +192 -0
- package/templates/scripts/README.md +109 -0
- package/templates/scripts/analyze-delegation-log.js +299 -0
- package/templates/scripts/autonomous-decision-logger.js +277 -0
- package/templates/scripts/git-history-analyzer.py +269 -0
- package/templates/scripts/phase-validation-gates.js +307 -0
- package/templates/scripts/poll-deployment-status.js +260 -0
- package/templates/scripts/roadmap-scanner.js +263 -0
- package/templates/scripts/validate-deployment.js +293 -0
- package/templates/skills/agent-creator/skill.json +18 -0
- package/templates/skills/agent-creator/skill.md +335 -0
- package/templates/skills/hook-creator/skill.json +18 -0
- package/templates/skills/hook-creator/skill.md +318 -0
- package/templates/skills/panel/skill.json +18 -0
- package/templates/skills/panel/skill.md +90 -0
- package/templates/skills/rag-agent-creator/skill.json +18 -0
- package/templates/skills/rag-agent-creator/skill.md +307 -0
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CCASP Panel - Persistent Control Panel for Claude Code
|
|
3
|
+
*
|
|
4
|
+
* Runs in a separate terminal and sends commands to Claude Code CLI
|
|
5
|
+
* via a queue file. Claude Code reads the queue via a hook.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import chalk from 'chalk';
|
|
9
|
+
import inquirer from 'inquirer';
|
|
10
|
+
import { spawn } from 'child_process';
|
|
11
|
+
import { existsSync, readFileSync } from 'fs';
|
|
12
|
+
import { join } from 'path';
|
|
13
|
+
import { homedir } from 'os';
|
|
14
|
+
import {
|
|
15
|
+
queueCommand,
|
|
16
|
+
copyToClipboard,
|
|
17
|
+
getQueueStatus,
|
|
18
|
+
clearQueue,
|
|
19
|
+
getQueueFilePath,
|
|
20
|
+
ensureQueueDir,
|
|
21
|
+
} from '../panel/queue.js';
|
|
22
|
+
import { getVersion } from '../utils.js';
|
|
23
|
+
|
|
24
|
+
// Panel ASCII Banner
|
|
25
|
+
const PANEL_BANNER = `
|
|
26
|
+
${chalk.cyan('╔═══════════════════════════════════════════════════════════════╗')}
|
|
27
|
+
${chalk.cyan('║')}${chalk.bold.white(' CCASP Control Panel')}${chalk.dim(' v' + getVersion())}${' '.repeat(20)}${chalk.cyan('║')}
|
|
28
|
+
${chalk.cyan('║')}${chalk.dim(' Commands are sent to Claude Code CLI')}${' '.repeat(19)}${chalk.cyan('║')}
|
|
29
|
+
${chalk.cyan('╚═══════════════════════════════════════════════════════════════╝')}`;
|
|
30
|
+
|
|
31
|
+
// Command definitions with their slash command equivalents
|
|
32
|
+
const PANEL_COMMANDS = {
|
|
33
|
+
// Agents & Skills
|
|
34
|
+
agents: {
|
|
35
|
+
header: 'Agents & Skills',
|
|
36
|
+
items: [
|
|
37
|
+
{ key: 'A', label: 'Create Agent', command: '/create-agent', desc: 'L1/L2/L3 agent builder' },
|
|
38
|
+
{ key: 'H', label: 'Create Hook', command: '/create-hook', desc: 'Enforcement hooks' },
|
|
39
|
+
{ key: 'S', label: 'Create Skill', command: '/create-skill', desc: 'RAG skill packages' },
|
|
40
|
+
{ key: 'M', label: 'Explore MCP', command: '/explore-mcp', desc: 'MCP server discovery' },
|
|
41
|
+
{ key: 'C', label: 'Claude Audit', command: '/claude-audit', desc: 'Best practices check' },
|
|
42
|
+
{ key: 'E', label: 'Explore Codebase', command: '/codebase-explorer', desc: 'Analyze structure' },
|
|
43
|
+
]
|
|
44
|
+
},
|
|
45
|
+
// Project Resources
|
|
46
|
+
resources: {
|
|
47
|
+
header: 'Project Resources',
|
|
48
|
+
items: [
|
|
49
|
+
{ key: '1', label: 'View Agents', command: '/view-agents', desc: 'List configured agents' },
|
|
50
|
+
{ key: '2', label: 'View Skills', command: '/view-skills', desc: 'List available skills' },
|
|
51
|
+
{ key: '3', label: 'View Hooks', command: '/view-hooks', desc: 'List enforcement hooks' },
|
|
52
|
+
{ key: '4', label: 'View Commands', command: '/INDEX', desc: 'All slash commands' },
|
|
53
|
+
{ key: '5', label: 'Settings', command: '/ccasp-settings', desc: 'Configuration' },
|
|
54
|
+
{ key: '6', label: 'Documentation', command: '/README', desc: 'Help & guides' },
|
|
55
|
+
]
|
|
56
|
+
},
|
|
57
|
+
// Quick Actions
|
|
58
|
+
quick: {
|
|
59
|
+
header: 'Quick Actions',
|
|
60
|
+
items: [
|
|
61
|
+
{ key: 'P', label: 'Phase Dev Plan', command: '/phase-dev-plan', desc: '95%+ success plans' },
|
|
62
|
+
{ key: 'G', label: 'GitHub Task', command: '/github-task', desc: 'Create GitHub issue' },
|
|
63
|
+
{ key: 'T', label: 'Run E2E Tests', command: '/e2e-test', desc: 'Playwright tests' },
|
|
64
|
+
{ key: 'U', label: 'Update Check', command: '/update-check', desc: 'Check for updates' },
|
|
65
|
+
]
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Display the panel menu
|
|
71
|
+
*/
|
|
72
|
+
function displayMenu() {
|
|
73
|
+
console.clear();
|
|
74
|
+
console.log(PANEL_BANNER);
|
|
75
|
+
console.log('');
|
|
76
|
+
|
|
77
|
+
// Get queue status
|
|
78
|
+
const status = getQueueStatus();
|
|
79
|
+
const statusIndicator = status.pending > 0
|
|
80
|
+
? chalk.yellow(`[${status.pending} pending]`)
|
|
81
|
+
: chalk.green('[Ready]');
|
|
82
|
+
|
|
83
|
+
console.log(` ${chalk.dim('Status:')} ${statusIndicator}`);
|
|
84
|
+
console.log('');
|
|
85
|
+
|
|
86
|
+
// Display each section
|
|
87
|
+
for (const [key, section] of Object.entries(PANEL_COMMANDS)) {
|
|
88
|
+
console.log(chalk.cyan(` ${section.header}:`));
|
|
89
|
+
console.log(chalk.cyan(' ' + '─'.repeat(40)));
|
|
90
|
+
|
|
91
|
+
// Display items in rows of 3
|
|
92
|
+
const items = section.items;
|
|
93
|
+
for (let i = 0; i < items.length; i += 3) {
|
|
94
|
+
const row = items.slice(i, i + 3);
|
|
95
|
+
const formatted = row.map(item =>
|
|
96
|
+
` ${chalk.yellow(`[${item.key}]`)} ${item.label.padEnd(14)}`
|
|
97
|
+
).join('');
|
|
98
|
+
console.log(formatted);
|
|
99
|
+
}
|
|
100
|
+
console.log('');
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// Bottom controls
|
|
104
|
+
console.log(chalk.dim(' ─────────────────────────────────────────────────────────────'));
|
|
105
|
+
console.log(` ${chalk.yellow('[Q]')} Quit ${chalk.yellow('[R]')} Refresh ${chalk.yellow('[X]')} Clear Queue ${chalk.yellow('[?]')} Help`);
|
|
106
|
+
console.log('');
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Find command by key
|
|
111
|
+
*/
|
|
112
|
+
function findCommandByKey(key) {
|
|
113
|
+
const upperKey = key.toUpperCase();
|
|
114
|
+
for (const section of Object.values(PANEL_COMMANDS)) {
|
|
115
|
+
const found = section.items.find(item => item.key.toUpperCase() === upperKey);
|
|
116
|
+
if (found) return found;
|
|
117
|
+
}
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Send command to Claude Code
|
|
123
|
+
*/
|
|
124
|
+
async function sendCommand(item) {
|
|
125
|
+
console.log('');
|
|
126
|
+
console.log(chalk.cyan(` Sending: ${item.command}`));
|
|
127
|
+
|
|
128
|
+
// Queue the command
|
|
129
|
+
const entry = queueCommand(item.command, '', {
|
|
130
|
+
label: item.label,
|
|
131
|
+
source: 'panel'
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
// Also copy to clipboard as fallback
|
|
135
|
+
const copied = copyToClipboard(item.command);
|
|
136
|
+
|
|
137
|
+
console.log('');
|
|
138
|
+
console.log(chalk.green(' ✓ Command queued'));
|
|
139
|
+
if (copied) {
|
|
140
|
+
console.log(chalk.dim(' ✓ Also copied to clipboard'));
|
|
141
|
+
}
|
|
142
|
+
console.log('');
|
|
143
|
+
console.log(chalk.white.bold(' → In Claude Code, press Enter to execute'));
|
|
144
|
+
console.log(chalk.dim(' (or paste with Ctrl+V if hook not installed)'));
|
|
145
|
+
console.log('');
|
|
146
|
+
|
|
147
|
+
// Wait for user acknowledgment
|
|
148
|
+
await inquirer.prompt([{
|
|
149
|
+
type: 'input',
|
|
150
|
+
name: 'continue',
|
|
151
|
+
message: 'Press Enter to continue...',
|
|
152
|
+
}]);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Show help
|
|
157
|
+
*/
|
|
158
|
+
async function showHelp() {
|
|
159
|
+
console.clear();
|
|
160
|
+
console.log(chalk.cyan.bold('\n CCASP Panel Help\n'));
|
|
161
|
+
console.log(chalk.white(' How it works:'));
|
|
162
|
+
console.log(chalk.dim(' 1. Select a command from the menu'));
|
|
163
|
+
console.log(chalk.dim(' 2. Command is queued for Claude Code'));
|
|
164
|
+
console.log(chalk.dim(' 3. In Claude Code, press Enter to execute'));
|
|
165
|
+
console.log('');
|
|
166
|
+
console.log(chalk.white(' Queue File:'));
|
|
167
|
+
console.log(chalk.dim(` ${getQueueFilePath()}`));
|
|
168
|
+
console.log('');
|
|
169
|
+
console.log(chalk.white(' Claude Code Hook:'));
|
|
170
|
+
console.log(chalk.dim(' Install with: ccasp install-panel-hook'));
|
|
171
|
+
console.log('');
|
|
172
|
+
|
|
173
|
+
await inquirer.prompt([{
|
|
174
|
+
type: 'input',
|
|
175
|
+
name: 'continue',
|
|
176
|
+
message: 'Press Enter to return to menu...',
|
|
177
|
+
}]);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Main panel loop
|
|
182
|
+
*/
|
|
183
|
+
export async function runPanel(options = {}) {
|
|
184
|
+
ensureQueueDir();
|
|
185
|
+
|
|
186
|
+
// Check if running inside Claude Code
|
|
187
|
+
if (process.env.CLAUDE_CODE_SESSION) {
|
|
188
|
+
console.log(chalk.yellow('\n Warning: Panel should run in a SEPARATE terminal.'));
|
|
189
|
+
console.log(chalk.dim(' This terminal is already inside Claude Code.\n'));
|
|
190
|
+
|
|
191
|
+
const { proceed } = await inquirer.prompt([{
|
|
192
|
+
type: 'confirm',
|
|
193
|
+
name: 'proceed',
|
|
194
|
+
message: 'Continue anyway?',
|
|
195
|
+
default: false
|
|
196
|
+
}]);
|
|
197
|
+
|
|
198
|
+
if (!proceed) {
|
|
199
|
+
console.log(chalk.dim('\n To use the panel:'));
|
|
200
|
+
console.log(chalk.dim(' 1. Open a new terminal window'));
|
|
201
|
+
console.log(chalk.dim(' 2. Run: ccasp panel\n'));
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
// Main loop
|
|
207
|
+
while (true) {
|
|
208
|
+
displayMenu();
|
|
209
|
+
|
|
210
|
+
const { action } = await inquirer.prompt([{
|
|
211
|
+
type: 'input',
|
|
212
|
+
name: 'action',
|
|
213
|
+
message: 'Select option:',
|
|
214
|
+
}]);
|
|
215
|
+
|
|
216
|
+
const key = action.trim().toUpperCase();
|
|
217
|
+
|
|
218
|
+
if (key === 'Q') {
|
|
219
|
+
console.log(chalk.dim('\n Goodbye!\n'));
|
|
220
|
+
process.exit(0);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
if (key === 'R') {
|
|
224
|
+
continue; // Refresh - just redisplay
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
if (key === 'X') {
|
|
228
|
+
clearQueue();
|
|
229
|
+
console.log(chalk.green('\n ✓ Queue cleared\n'));
|
|
230
|
+
await new Promise(r => setTimeout(r, 1000));
|
|
231
|
+
continue;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
if (key === '?') {
|
|
235
|
+
await showHelp();
|
|
236
|
+
continue;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
// Find and execute command
|
|
240
|
+
const item = findCommandByKey(key);
|
|
241
|
+
if (item) {
|
|
242
|
+
await sendCommand(item);
|
|
243
|
+
} else if (key) {
|
|
244
|
+
console.log(chalk.red(`\n Unknown option: ${key}\n`));
|
|
245
|
+
await new Promise(r => setTimeout(r, 1000));
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* Launch panel in a new terminal window
|
|
252
|
+
*/
|
|
253
|
+
export async function launchPanel() {
|
|
254
|
+
console.log(chalk.cyan('\n Launching CCASP Panel in new window...\n'));
|
|
255
|
+
|
|
256
|
+
const ccaspPath = join(process.cwd(), 'node_modules', '.bin', 'ccasp');
|
|
257
|
+
const globalPath = 'ccasp'; // Assume globally installed
|
|
258
|
+
|
|
259
|
+
try {
|
|
260
|
+
if (process.platform === 'win32') {
|
|
261
|
+
// Windows - use start command with PowerShell
|
|
262
|
+
spawn('cmd.exe', ['/c', 'start', 'powershell', '-NoExit', '-Command', 'ccasp panel'], {
|
|
263
|
+
detached: true,
|
|
264
|
+
stdio: 'ignore'
|
|
265
|
+
});
|
|
266
|
+
} else if (process.platform === 'darwin') {
|
|
267
|
+
// macOS - use osascript
|
|
268
|
+
spawn('osascript', [
|
|
269
|
+
'-e', `tell application "Terminal" to do script "ccasp panel"`
|
|
270
|
+
], {
|
|
271
|
+
detached: true,
|
|
272
|
+
stdio: 'ignore'
|
|
273
|
+
});
|
|
274
|
+
} else {
|
|
275
|
+
// Linux - try various terminal emulators
|
|
276
|
+
const terminals = ['gnome-terminal', 'konsole', 'xterm', 'xfce4-terminal'];
|
|
277
|
+
for (const term of terminals) {
|
|
278
|
+
try {
|
|
279
|
+
if (term === 'gnome-terminal') {
|
|
280
|
+
spawn(term, ['--', 'ccasp', 'panel'], { detached: true, stdio: 'ignore' });
|
|
281
|
+
} else {
|
|
282
|
+
spawn(term, ['-e', 'ccasp panel'], { detached: true, stdio: 'ignore' });
|
|
283
|
+
}
|
|
284
|
+
break;
|
|
285
|
+
} catch {
|
|
286
|
+
continue;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
console.log(chalk.green(' ✓ Panel window opened'));
|
|
292
|
+
console.log(chalk.dim(' You can now use this terminal for Claude Code\n'));
|
|
293
|
+
} catch (error) {
|
|
294
|
+
console.log(chalk.red(' Failed to open new terminal'));
|
|
295
|
+
console.log(chalk.dim(` Run manually: ${chalk.white('ccasp panel')}\n`));
|
|
296
|
+
}
|
|
297
|
+
}
|
|
@@ -743,7 +743,8 @@ async function runQuickSetup() {
|
|
|
743
743
|
|
|
744
744
|
// Run init with selected features
|
|
745
745
|
// Features are already in init.js-compatible format (INDIVIDUAL_FEATURES uses correct names)
|
|
746
|
-
|
|
746
|
+
// Note: Don't use spinner here since runInit has its own console output
|
|
747
|
+
console.log('');
|
|
747
748
|
|
|
748
749
|
// Check if any features require post-configuration
|
|
749
750
|
const featuresRequiringConfig = features.filter((f) =>
|
|
@@ -757,7 +758,7 @@ async function runQuickSetup() {
|
|
|
757
758
|
skipPrompts: true,
|
|
758
759
|
});
|
|
759
760
|
|
|
760
|
-
|
|
761
|
+
console.log(chalk.green('\n✓ .claude folder setup complete!'));
|
|
761
762
|
|
|
762
763
|
// Show which features need post-configuration
|
|
763
764
|
if (featuresRequiringConfig.length > 0) {
|
|
@@ -793,7 +794,7 @@ async function runQuickSetup() {
|
|
|
793
794
|
showCompletionMessage();
|
|
794
795
|
return true;
|
|
795
796
|
} catch (error) {
|
|
796
|
-
|
|
797
|
+
console.error(chalk.red('\n✗ Setup failed'));
|
|
797
798
|
console.error(chalk.red(error.message));
|
|
798
799
|
return false;
|
|
799
800
|
}
|
|
@@ -400,9 +400,9 @@ export async function runTestSetup(options) {
|
|
|
400
400
|
|
|
401
401
|
// Save main config to tech-stack.json
|
|
402
402
|
const configPath = saveTestingConfig(testingConfig);
|
|
403
|
-
spinner.
|
|
403
|
+
spinner.succeed('Saved testing config to tech-stack.json');
|
|
404
404
|
|
|
405
|
-
// Save testing rules markdown
|
|
405
|
+
// Save testing rules markdown - ask user AFTER spinner is stopped
|
|
406
406
|
const { generateRules } = await inquirer.prompt([
|
|
407
407
|
{
|
|
408
408
|
type: 'confirm',
|
|
@@ -414,12 +414,11 @@ export async function runTestSetup(options) {
|
|
|
414
414
|
|
|
415
415
|
let rulesPath = null;
|
|
416
416
|
if (generateRules) {
|
|
417
|
+
const rulesSpinner = ora('Generating TESTING_RULES.md...').start();
|
|
417
418
|
rulesPath = saveTestingRules(testingConfig);
|
|
418
|
-
|
|
419
|
+
rulesSpinner.succeed('Saved TESTING_RULES.md to .claude/task-lists/');
|
|
419
420
|
}
|
|
420
421
|
|
|
421
|
-
spinner.succeed('Configuration files created');
|
|
422
|
-
|
|
423
422
|
// Summary
|
|
424
423
|
const details = [
|
|
425
424
|
`Mode: ${TESTING_MODES[config.mode].name}`,
|
package/src/data/releases.json
CHANGED
|
@@ -1,5 +1,169 @@
|
|
|
1
1
|
{
|
|
2
2
|
"releases": [
|
|
3
|
+
{
|
|
4
|
+
"version": "1.5.0",
|
|
5
|
+
"date": "2026-01-30",
|
|
6
|
+
"summary": "Feature: Phase 5 of 85 Recommendations - Documentation Templates",
|
|
7
|
+
"highlights": [
|
|
8
|
+
"Added AI_ARCHITECTURE_CONSTITUTION.template.md - Non-negotiable project rules",
|
|
9
|
+
"Added PROGRESS_JSON_TEMPLATE.json - Phased development state tracking",
|
|
10
|
+
"Added DETAILED_GOTCHAS.template.md - Problem-solution patterns",
|
|
11
|
+
"Added background-agent.template.md - Production orchestration patterns",
|
|
12
|
+
"Added PHASE-DEV-CHECKLIST.template.md - L1/L2/L3 validation gates"
|
|
13
|
+
],
|
|
14
|
+
"newFeatures": {
|
|
15
|
+
"commands": [],
|
|
16
|
+
"agents": [],
|
|
17
|
+
"skills": [],
|
|
18
|
+
"hooks": [],
|
|
19
|
+
"other": [
|
|
20
|
+
{
|
|
21
|
+
"name": "templates/docs/",
|
|
22
|
+
"description": "Documentation templates directory with 5 essential documents"
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
"breaking": [],
|
|
27
|
+
"deprecated": []
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"version": "1.4.0",
|
|
31
|
+
"date": "2026-01-30",
|
|
32
|
+
"summary": "Feature: Phase 4 of 85 Recommendations - Additional Commands",
|
|
33
|
+
"highlights": [
|
|
34
|
+
"Added refactor-check command - Fast pre-commit quality gate",
|
|
35
|
+
"Added refactor-cleanup command - Auto-fix lint, format, imports",
|
|
36
|
+
"Added refactor-prep command - Pre-refactoring safety checklist",
|
|
37
|
+
"Added ask-claude command - Natural language command discovery",
|
|
38
|
+
"Added create-smoke-test command - Auto-generate Playwright tests",
|
|
39
|
+
"New 'refactoring' optional feature - Quality tools suite",
|
|
40
|
+
"New 'testing' optional feature - Advanced test generation"
|
|
41
|
+
],
|
|
42
|
+
"newFeatures": {
|
|
43
|
+
"commands": [
|
|
44
|
+
{
|
|
45
|
+
"name": "refactor-check",
|
|
46
|
+
"description": "Fast pre-commit quality gate - lint, type-check, test affected"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"name": "refactor-cleanup",
|
|
50
|
+
"description": "Daily maintenance automation - fix lint, remove unused imports"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"name": "refactor-prep",
|
|
54
|
+
"description": "Pre-refactoring safety checklist - ensure safe conditions"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"name": "ask-claude",
|
|
58
|
+
"description": "Natural language command discovery"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"name": "create-smoke-test",
|
|
62
|
+
"description": "Auto-generate Playwright smoke tests for critical flows"
|
|
63
|
+
}
|
|
64
|
+
],
|
|
65
|
+
"agents": [],
|
|
66
|
+
"skills": [],
|
|
67
|
+
"hooks": [],
|
|
68
|
+
"other": []
|
|
69
|
+
},
|
|
70
|
+
"breaking": [],
|
|
71
|
+
"deprecated": []
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"version": "1.3.0",
|
|
75
|
+
"date": "2026-01-30",
|
|
76
|
+
"summary": "Feature: Phase 3 of 85 Recommendations - Skills Infrastructure",
|
|
77
|
+
"highlights": [
|
|
78
|
+
"Added agent-creator skill template - Best practices for Claude Code agent creation",
|
|
79
|
+
"Added hook-creator skill template - Hook configuration and implementation patterns",
|
|
80
|
+
"Added rag-agent-creator skill template - RAG-enhanced knowledge base design",
|
|
81
|
+
"New 'skillTemplates' optional feature in init.js - Auto-deploys skill templates",
|
|
82
|
+
"New install-skill CLI command - Install skills post-init",
|
|
83
|
+
"Skills deployed via ccasp init with recursive directory copy",
|
|
84
|
+
"Tech-stack.json now tracks deployed skills"
|
|
85
|
+
],
|
|
86
|
+
"newFeatures": {
|
|
87
|
+
"commands": [
|
|
88
|
+
{
|
|
89
|
+
"name": "install-skill",
|
|
90
|
+
"description": "Install skills to your project after initial setup"
|
|
91
|
+
}
|
|
92
|
+
],
|
|
93
|
+
"agents": [],
|
|
94
|
+
"skills": [
|
|
95
|
+
{
|
|
96
|
+
"name": "agent-creator",
|
|
97
|
+
"description": "Create Claude Code agents with proper Task tool configuration"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"name": "hook-creator",
|
|
101
|
+
"description": "Create enforcement hooks with JSON schema and event handling"
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"name": "rag-agent-creator",
|
|
105
|
+
"description": "Create RAG-enhanced agents with structured knowledge bases"
|
|
106
|
+
}
|
|
107
|
+
],
|
|
108
|
+
"hooks": [],
|
|
109
|
+
"other": []
|
|
110
|
+
},
|
|
111
|
+
"breaking": [],
|
|
112
|
+
"deprecated": []
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"version": "1.2.0",
|
|
116
|
+
"date": "2026-01-30",
|
|
117
|
+
"summary": "Feature: Phase 2 of 85 Recommendations - 7 Advanced Hook Templates",
|
|
118
|
+
"highlights": [
|
|
119
|
+
"Added session-id-generator.template.js - UUID sessions with PID-keyed registry",
|
|
120
|
+
"Added git-commit-tracker.template.js - Track commits per phase in PROGRESS.json",
|
|
121
|
+
"Added branch-merge-checker.template.js - Validate main branch sync before deployments",
|
|
122
|
+
"Added issue-completion-detector.template.js - Natural language completion detection",
|
|
123
|
+
"Added token-usage-monitor.template.js - Cumulative token tracking with respawn warning",
|
|
124
|
+
"Added autonomous-decision-logger.template.js - JSONL audit trail for agent decisions",
|
|
125
|
+
"Added phase-validation-gates.template.js - 5-gate validation before phase auto-chaining",
|
|
126
|
+
"New 'advancedHooks' optional feature in init.js"
|
|
127
|
+
],
|
|
128
|
+
"newFeatures": {
|
|
129
|
+
"commands": [],
|
|
130
|
+
"agents": [],
|
|
131
|
+
"skills": [],
|
|
132
|
+
"hooks": [
|
|
133
|
+
{
|
|
134
|
+
"name": "session-id-generator",
|
|
135
|
+
"description": "Generates UUID sessions with PID-keyed registry for parallel session isolation"
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"name": "git-commit-tracker",
|
|
139
|
+
"description": "Tracks git commits per phase and updates PROGRESS.json for rollback support"
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"name": "branch-merge-checker",
|
|
143
|
+
"description": "Validates main branch sync status before deployments"
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
"name": "issue-completion-detector",
|
|
147
|
+
"description": "Detects completion phrases and triggers deployment pipeline"
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"name": "token-usage-monitor",
|
|
151
|
+
"description": "Tracks cumulative token usage with auto-respawn warning at 90%"
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"name": "autonomous-decision-logger",
|
|
155
|
+
"description": "Creates JSONL audit trail for all agent decisions"
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
"name": "phase-validation-gates",
|
|
159
|
+
"description": "5-gate validation before phase auto-chaining"
|
|
160
|
+
}
|
|
161
|
+
],
|
|
162
|
+
"other": []
|
|
163
|
+
},
|
|
164
|
+
"breaking": [],
|
|
165
|
+
"deprecated": []
|
|
166
|
+
},
|
|
3
167
|
{
|
|
4
168
|
"version": "1.1.0",
|
|
5
169
|
"date": "2026-01-30",
|