agile-context-engineering 0.3.0 → 0.5.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/.claude-plugin/marketplace.json +18 -0
- package/.claude-plugin/plugin.json +10 -0
- package/CHANGELOG.md +7 -1
- package/LICENSE +51 -51
- package/README.md +330 -318
- package/agents/ace-code-discovery-analyst.md +245 -245
- package/agents/ace-code-integration-analyst.md +248 -248
- package/agents/ace-code-reviewer.md +375 -375
- package/agents/ace-product-owner.md +365 -361
- package/agents/ace-project-researcher.md +606 -606
- package/agents/ace-research-synthesizer.md +228 -228
- package/agents/ace-technical-application-architect.md +315 -315
- package/agents/ace-wiki-mapper.md +449 -445
- package/bin/install.js +605 -195
- package/hooks/ace-check-update.js +71 -62
- package/hooks/ace-statusline.js +107 -89
- package/hooks/hooks.json +14 -0
- package/package.json +7 -5
- package/shared/lib/ace-core.js +361 -0
- package/shared/lib/ace-core.test.js +308 -0
- package/shared/lib/ace-github.js +753 -0
- package/shared/lib/ace-story.js +400 -0
- package/shared/lib/ace-story.test.js +250 -0
- package/{agile-context-engineering → shared}/utils/questioning.xml +110 -110
- package/{agile-context-engineering → shared}/utils/ui-formatting.md +299 -299
- package/{commands/ace/execute-story.md → skills/execute-story/SKILL.md} +116 -138
- package/skills/execute-story/script.js +291 -0
- package/skills/execute-story/script.test.js +261 -0
- package/{agile-context-engineering/templates/product/story.xml → skills/execute-story/story-template.xml} +451 -451
- package/skills/execute-story/walkthrough-template.xml +255 -0
- package/{agile-context-engineering/workflows/execute-story.xml → skills/execute-story/workflow.xml} +1221 -1219
- package/skills/help/SKILL.md +71 -0
- package/skills/help/script.js +315 -0
- package/skills/help/script.test.js +183 -0
- package/{agile-context-engineering/workflows/help.xml → skills/help/workflow.xml} +544 -533
- package/{commands/ace/init-coding-standards.md → skills/init-coding-standards/SKILL.md} +91 -83
- package/{agile-context-engineering/templates/wiki/coding-standards.xml → skills/init-coding-standards/coding-standards-template.xml} +531 -531
- package/skills/init-coding-standards/script.js +50 -0
- package/skills/init-coding-standards/script.test.js +70 -0
- package/{agile-context-engineering/workflows/init-coding-standards.xml → skills/init-coding-standards/workflow.xml} +381 -386
- package/skills/map-cross-cutting/SKILL.md +126 -0
- package/{agile-context-engineering/templates/wiki → skills/map-cross-cutting}/system-cross-cutting.xml +197 -197
- package/skills/map-cross-cutting/workflow.xml +330 -0
- package/skills/map-guide/SKILL.md +126 -0
- package/{agile-context-engineering/templates/wiki → skills/map-guide}/guide.xml +137 -137
- package/skills/map-guide/workflow.xml +320 -0
- package/skills/map-pattern/SKILL.md +125 -0
- package/{agile-context-engineering/templates/wiki → skills/map-pattern}/pattern.xml +159 -159
- package/skills/map-pattern/workflow.xml +331 -0
- package/{commands/ace/map-story.md → skills/map-story/SKILL.md} +180 -165
- package/{agile-context-engineering/templates/wiki → skills/map-story/templates}/decizions.xml +115 -115
- package/skills/map-story/templates/guide.xml +137 -0
- package/skills/map-story/templates/pattern.xml +159 -0
- package/skills/map-story/templates/system-cross-cutting.xml +197 -0
- package/{agile-context-engineering/templates/wiki → skills/map-story/templates}/system.xml +381 -381
- package/{agile-context-engineering/templates/wiki → skills/map-story/templates}/tech-debt-index.xml +125 -125
- package/{agile-context-engineering/templates/wiki → skills/map-story/templates}/walkthrough.xml +255 -255
- package/{agile-context-engineering/workflows/map-story.xml → skills/map-story/workflow.xml} +1046 -1046
- package/{commands/ace/map-subsystem.md → skills/map-subsystem/SKILL.md} +155 -140
- package/skills/map-subsystem/script.js +51 -0
- package/skills/map-subsystem/script.test.js +68 -0
- package/skills/map-subsystem/templates/decizions.xml +115 -0
- package/skills/map-subsystem/templates/guide.xml +137 -0
- package/{agile-context-engineering/templates/wiki → skills/map-subsystem/templates}/module-discovery.xml +174 -174
- package/skills/map-subsystem/templates/pattern.xml +159 -0
- package/{agile-context-engineering/templates/wiki → skills/map-subsystem/templates}/subsystem-architecture.xml +343 -343
- package/{agile-context-engineering/templates/wiki → skills/map-subsystem/templates}/subsystem-structure.xml +234 -234
- package/skills/map-subsystem/templates/system-cross-cutting.xml +197 -0
- package/skills/map-subsystem/templates/system.xml +381 -0
- package/skills/map-subsystem/templates/walkthrough.xml +255 -0
- package/{agile-context-engineering/workflows/map-subsystem.xml → skills/map-subsystem/workflow.xml} +1173 -1178
- package/skills/map-sys-doc/SKILL.md +125 -0
- package/skills/map-sys-doc/system.xml +381 -0
- package/skills/map-sys-doc/workflow.xml +336 -0
- package/{commands/ace/map-system.md → skills/map-system/SKILL.md} +103 -92
- package/skills/map-system/script.js +75 -0
- package/skills/map-system/script.test.js +73 -0
- package/{agile-context-engineering/templates/wiki → skills/map-system/templates}/system-architecture.xml +254 -254
- package/{agile-context-engineering/templates/wiki → skills/map-system/templates}/system-structure.xml +177 -177
- package/{agile-context-engineering/templates/wiki → skills/map-system/templates}/testing-framework.xml +283 -283
- package/{agile-context-engineering/templates/wiki → skills/map-system/templates}/wiki-readme.xml +296 -296
- package/{agile-context-engineering/workflows/map-system.xml → skills/map-system/workflow.xml} +667 -672
- package/{commands/ace/map-walkthrough.md → skills/map-walkthrough/SKILL.md} +140 -127
- package/skills/map-walkthrough/walkthrough.xml +255 -0
- package/{agile-context-engineering/workflows/map-walkthrough.xml → skills/map-walkthrough/workflow.xml} +457 -457
- package/{commands/ace/plan-backlog.md → skills/plan-backlog/SKILL.md} +93 -83
- package/{agile-context-engineering/templates/product/product-backlog.xml → skills/plan-backlog/product-backlog-template.xml} +231 -231
- package/skills/plan-backlog/script.js +121 -0
- package/skills/plan-backlog/script.test.js +83 -0
- package/{agile-context-engineering/workflows/plan-backlog.xml → skills/plan-backlog/workflow.xml} +1348 -1356
- package/{commands/ace/plan-feature.md → skills/plan-feature/SKILL.md} +99 -89
- package/{agile-context-engineering/templates/product/feature.xml → skills/plan-feature/feature-template.xml} +361 -361
- package/skills/plan-feature/script.js +131 -0
- package/skills/plan-feature/script.test.js +80 -0
- package/{agile-context-engineering/workflows/plan-feature.xml → skills/plan-feature/workflow.xml} +1487 -1495
- package/{commands/ace/plan-product-vision.md → skills/plan-product-vision/SKILL.md} +91 -81
- package/{agile-context-engineering/templates/product/product-vision.xml → skills/plan-product-vision/product-vision-template.xml} +227 -227
- package/skills/plan-product-vision/script.js +51 -0
- package/skills/plan-product-vision/script.test.js +69 -0
- package/{agile-context-engineering/workflows/plan-product-vision.xml → skills/plan-product-vision/workflow.xml} +337 -342
- package/{commands/ace/plan-story.md → skills/plan-story/SKILL.md} +139 -159
- package/skills/plan-story/script.js +295 -0
- package/skills/plan-story/script.test.js +240 -0
- package/skills/plan-story/story-template.xml +458 -0
- package/{agile-context-engineering/workflows/plan-story.xml → skills/plan-story/workflow.xml} +1301 -944
- package/{commands/ace/research-external-solution.md → skills/research-external-solution/SKILL.md} +120 -138
- package/{agile-context-engineering/templates/product/external-solution.xml → skills/research-external-solution/external-solution-template.xml} +832 -832
- package/skills/research-external-solution/script.js +229 -0
- package/skills/research-external-solution/script.test.js +134 -0
- package/{agile-context-engineering/workflows/research-external-solution.xml → skills/research-external-solution/workflow.xml} +657 -659
- package/{commands/ace/research-integration-solution.md → skills/research-integration-solution/SKILL.md} +121 -135
- package/{agile-context-engineering/templates/product/story-integration-solution.xml → skills/research-integration-solution/integration-solution-template.xml} +1015 -1015
- package/skills/research-integration-solution/script.js +223 -0
- package/skills/research-integration-solution/script.test.js +134 -0
- package/{agile-context-engineering/workflows/research-integration-solution.xml → skills/research-integration-solution/workflow.xml} +711 -713
- package/{commands/ace/research-story-wiki.md → skills/research-story-wiki/SKILL.md} +101 -116
- package/skills/research-story-wiki/script.js +223 -0
- package/skills/research-story-wiki/script.test.js +138 -0
- package/{agile-context-engineering/templates/product/story-wiki.xml → skills/research-story-wiki/story-wiki-template.xml} +194 -194
- package/{agile-context-engineering/workflows/research-story-wiki.xml → skills/research-story-wiki/workflow.xml} +473 -475
- package/{commands/ace/research-technical-solution.md → skills/research-technical-solution/SKILL.md} +131 -147
- package/skills/research-technical-solution/script.js +223 -0
- package/skills/research-technical-solution/script.test.js +134 -0
- package/{agile-context-engineering/templates/product/story-technical-solution.xml → skills/research-technical-solution/technical-solution-template.xml} +1025 -1025
- package/{agile-context-engineering/workflows/research-technical-solution.xml → skills/research-technical-solution/workflow.xml} +761 -763
- package/{commands/ace/review-story.md → skills/review-story/SKILL.md} +99 -109
- package/skills/review-story/script.js +249 -0
- package/skills/review-story/script.test.js +169 -0
- package/skills/review-story/story-template.xml +451 -0
- package/{agile-context-engineering/workflows/review-story.xml → skills/review-story/workflow.xml} +279 -281
- package/{commands/ace/update.md → skills/update/SKILL.md} +65 -56
- package/{agile-context-engineering/workflows/update.xml → skills/update/workflow.xml} +33 -18
- package/agile-context-engineering/src/ace-tools.js +0 -2881
- package/agile-context-engineering/src/ace-tools.test.js +0 -1089
- package/agile-context-engineering/templates/_command.md +0 -54
- package/agile-context-engineering/templates/_workflow.xml +0 -17
- package/agile-context-engineering/templates/config.json +0 -0
- package/agile-context-engineering/templates/product/integration-solution.xml +0 -0
- package/commands/ace/help.md +0 -93
|
@@ -1,62 +1,71 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
// Check for ACE updates in background, write result to cache
|
|
3
|
-
// Called by SessionStart hook - runs once per session
|
|
4
|
-
|
|
5
|
-
const fs = require('fs');
|
|
6
|
-
const path = require('path');
|
|
7
|
-
const os = require('os');
|
|
8
|
-
const { spawn } = require('child_process');
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
//
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Check for ACE updates in background, write result to cache
|
|
3
|
+
// Called by SessionStart hook - runs once per session
|
|
4
|
+
|
|
5
|
+
const fs = require('fs');
|
|
6
|
+
const path = require('path');
|
|
7
|
+
const os = require('os');
|
|
8
|
+
const { spawn } = require('child_process');
|
|
9
|
+
|
|
10
|
+
// Use CLAUDE_PLUGIN_DATA for persistent cache (survives plugin updates)
|
|
11
|
+
// Use CLAUDE_PLUGIN_ROOT to find the bundled VERSION file
|
|
12
|
+
const pluginData = process.env.CLAUDE_PLUGIN_DATA;
|
|
13
|
+
const pluginRoot = process.env.CLAUDE_PLUGIN_ROOT;
|
|
14
|
+
|
|
15
|
+
// Fallback for legacy standalone installs
|
|
16
|
+
const homeDir = os.homedir();
|
|
17
|
+
const cwd = process.cwd();
|
|
18
|
+
|
|
19
|
+
const cacheDir = pluginData || path.join(homeDir, '.claude', 'cache');
|
|
20
|
+
const cacheFile = path.join(cacheDir, 'ace-update-check.json');
|
|
21
|
+
|
|
22
|
+
// VERSION file: prefer plugin root, then legacy locations
|
|
23
|
+
const versionFiles = [
|
|
24
|
+
pluginRoot ? path.join(pluginRoot, 'shared', 'VERSION') : null,
|
|
25
|
+
path.join(cwd, '.claude', 'shared', 'VERSION'),
|
|
26
|
+
path.join(homeDir, '.claude', 'shared', 'VERSION'),
|
|
27
|
+
].filter(Boolean);
|
|
28
|
+
|
|
29
|
+
// Ensure cache directory exists
|
|
30
|
+
if (!fs.existsSync(cacheDir)) {
|
|
31
|
+
fs.mkdirSync(cacheDir, { recursive: true });
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Run check in background (spawn detached process, windowsHide prevents console flash)
|
|
35
|
+
const child = spawn(process.execPath, ['-e', `
|
|
36
|
+
const fs = require('fs');
|
|
37
|
+
const { execSync } = require('child_process');
|
|
38
|
+
|
|
39
|
+
const cacheFile = ${JSON.stringify(cacheFile)};
|
|
40
|
+
const versionFiles = ${JSON.stringify(versionFiles)};
|
|
41
|
+
|
|
42
|
+
let installed = '0.0.0';
|
|
43
|
+
try {
|
|
44
|
+
for (const vf of versionFiles) {
|
|
45
|
+
if (fs.existsSync(vf)) {
|
|
46
|
+
installed = fs.readFileSync(vf, 'utf8').trim();
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
} catch (e) {}
|
|
51
|
+
|
|
52
|
+
let latest = null;
|
|
53
|
+
try {
|
|
54
|
+
latest = execSync('npm view agile-context-engineering version', { encoding: 'utf8', timeout: 10000, windowsHide: true }).trim();
|
|
55
|
+
} catch (e) {}
|
|
56
|
+
|
|
57
|
+
const result = {
|
|
58
|
+
update_available: latest && installed !== latest,
|
|
59
|
+
installed,
|
|
60
|
+
latest: latest || 'unknown',
|
|
61
|
+
checked: Math.floor(Date.now() / 1000)
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
fs.writeFileSync(cacheFile, JSON.stringify(result));
|
|
65
|
+
`], {
|
|
66
|
+
stdio: 'ignore',
|
|
67
|
+
windowsHide: true,
|
|
68
|
+
detached: true
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
child.unref();
|
package/hooks/ace-statusline.js
CHANGED
|
@@ -1,89 +1,107 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
// Claude Code Statusline - ACE Edition
|
|
3
|
-
// Shows: update indicator | model | current task | directory | context usage
|
|
4
|
-
|
|
5
|
-
const fs = require('fs');
|
|
6
|
-
const path = require('path');
|
|
7
|
-
const os = require('os');
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
process.stdin.
|
|
13
|
-
process.stdin.on('
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
//
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
.
|
|
55
|
-
.
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Claude Code Statusline - ACE Edition
|
|
3
|
+
// Shows: update indicator | model | current task | directory | context usage
|
|
4
|
+
|
|
5
|
+
const fs = require('fs');
|
|
6
|
+
const path = require('path');
|
|
7
|
+
const os = require('os');
|
|
8
|
+
const { execSync } = require('child_process');
|
|
9
|
+
|
|
10
|
+
// Read JSON from stdin
|
|
11
|
+
let input = '';
|
|
12
|
+
process.stdin.setEncoding('utf8');
|
|
13
|
+
process.stdin.on('data', chunk => input += chunk);
|
|
14
|
+
process.stdin.on('end', () => {
|
|
15
|
+
try {
|
|
16
|
+
const data = JSON.parse(input);
|
|
17
|
+
const model = data.model?.display_name || 'Claude';
|
|
18
|
+
const dir = data.workspace?.current_dir || process.cwd();
|
|
19
|
+
const session = data.session_id || '';
|
|
20
|
+
const remaining = data.context_window?.remaining_percentage;
|
|
21
|
+
|
|
22
|
+
// Context window display (shows USED percentage scaled to 80% limit)
|
|
23
|
+
// Claude Code enforces an 80% context limit, so we scale to show 100% at that point
|
|
24
|
+
let ctx = '';
|
|
25
|
+
if (remaining != null) {
|
|
26
|
+
const rem = Math.round(remaining);
|
|
27
|
+
const rawUsed = Math.max(0, Math.min(100, 100 - rem));
|
|
28
|
+
// Scale: 80% real usage = 100% displayed
|
|
29
|
+
const used = Math.min(100, Math.round((rawUsed / 80) * 100));
|
|
30
|
+
|
|
31
|
+
// Build progress bar (10 segments)
|
|
32
|
+
const filled = Math.floor(used / 10);
|
|
33
|
+
const bar = '\u2588'.repeat(filled) + '\u2591'.repeat(10 - filled);
|
|
34
|
+
|
|
35
|
+
// Color based on scaled usage
|
|
36
|
+
if (used < 63) {
|
|
37
|
+
ctx = ` \x1b[32m${bar} ${used}%\x1b[0m`;
|
|
38
|
+
} else if (used < 81) {
|
|
39
|
+
ctx = ` \x1b[33m${bar} ${used}%\x1b[0m`;
|
|
40
|
+
} else if (used < 95) {
|
|
41
|
+
ctx = ` \x1b[38;5;208m${bar} ${used}%\x1b[0m`;
|
|
42
|
+
} else {
|
|
43
|
+
ctx = ` \x1b[5;31m\u{1F480} ${bar} ${used}%\x1b[0m`;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Current task from todos (Claude Code internal directory — always ~/.claude/)
|
|
48
|
+
let task = '';
|
|
49
|
+
const homeDir = os.homedir();
|
|
50
|
+
const todosDir = path.join(homeDir, '.claude', 'todos');
|
|
51
|
+
if (session && fs.existsSync(todosDir)) {
|
|
52
|
+
try {
|
|
53
|
+
const files = fs.readdirSync(todosDir)
|
|
54
|
+
.filter(f => f.startsWith(session) && f.includes('-agent-') && f.endsWith('.json'))
|
|
55
|
+
.map(f => ({ name: f, mtime: fs.statSync(path.join(todosDir, f)).mtime }))
|
|
56
|
+
.sort((a, b) => b.mtime - a.mtime);
|
|
57
|
+
|
|
58
|
+
if (files.length > 0) {
|
|
59
|
+
try {
|
|
60
|
+
const todos = JSON.parse(fs.readFileSync(path.join(todosDir, files[0].name), 'utf8'));
|
|
61
|
+
const inProgress = todos.find(t => t.status === 'in_progress');
|
|
62
|
+
if (inProgress) task = inProgress.activeForm || '';
|
|
63
|
+
} catch (e) {}
|
|
64
|
+
}
|
|
65
|
+
} catch (e) {}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// ACE update available? Check plugin data dir first, then legacy location
|
|
69
|
+
let aceUpdate = '';
|
|
70
|
+
const pluginData = process.env.CLAUDE_PLUGIN_DATA;
|
|
71
|
+
const cacheLocations = [
|
|
72
|
+
pluginData ? path.join(pluginData, 'ace-update-check.json') : null,
|
|
73
|
+
path.join(homeDir, '.claude', 'cache', 'ace-update-check.json'),
|
|
74
|
+
].filter(Boolean);
|
|
75
|
+
|
|
76
|
+
for (const cacheFile of cacheLocations) {
|
|
77
|
+
if (fs.existsSync(cacheFile)) {
|
|
78
|
+
try {
|
|
79
|
+
const cache = JSON.parse(fs.readFileSync(cacheFile, 'utf8'));
|
|
80
|
+
if (cache.update_available) {
|
|
81
|
+
aceUpdate = '\x1b[33m\u2B06 /ace:update\x1b[0m \u2502 ';
|
|
82
|
+
}
|
|
83
|
+
break;
|
|
84
|
+
} catch (e) {}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// Git branch
|
|
89
|
+
let branch = '';
|
|
90
|
+
try {
|
|
91
|
+
const raw = execSync('git rev-parse --abbrev-ref HEAD', { cwd: dir, encoding: 'utf8', timeout: 2000, stdio: ['pipe', 'pipe', 'pipe'], windowsHide: true }).trim();
|
|
92
|
+
if (raw && raw !== 'HEAD') {
|
|
93
|
+
branch = ` \x1b[36m\u2387 ${raw}\x1b[0m`;
|
|
94
|
+
}
|
|
95
|
+
} catch {}
|
|
96
|
+
|
|
97
|
+
// Output
|
|
98
|
+
const dirname = path.basename(dir);
|
|
99
|
+
if (task) {
|
|
100
|
+
process.stdout.write(`${aceUpdate}\x1b[2m${model}\x1b[0m \u2502 \x1b[1m${task}\x1b[0m \u2502 \x1b[2m${dirname}\x1b[0m${branch}${ctx}`);
|
|
101
|
+
} else {
|
|
102
|
+
process.stdout.write(`${aceUpdate}\x1b[2m${model}\x1b[0m \u2502 \x1b[2m${dirname}\x1b[0m${branch}${ctx}`);
|
|
103
|
+
}
|
|
104
|
+
} catch (e) {
|
|
105
|
+
// Silent fail - don't break statusline on parse errors
|
|
106
|
+
}
|
|
107
|
+
});
|
package/hooks/hooks.json
ADDED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agile-context-engineering",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "ACE - Agile Context Engineering:
|
|
3
|
+
"version": "0.5.1",
|
|
4
|
+
"description": "ACE - Agile Context Engineering: a spec-driven development system for Claude Code, Codex, and Crush with Agile workflows",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
|
7
7
|
"agile-context-engineering": "bin/install.js",
|
|
@@ -9,17 +9,19 @@
|
|
|
9
9
|
},
|
|
10
10
|
"files": [
|
|
11
11
|
"bin",
|
|
12
|
-
"
|
|
12
|
+
"skills",
|
|
13
|
+
"shared",
|
|
13
14
|
"agents",
|
|
14
15
|
"hooks",
|
|
15
|
-
"
|
|
16
|
+
".claude-plugin",
|
|
16
17
|
"CHANGELOG.md"
|
|
17
18
|
],
|
|
18
19
|
"scripts": {
|
|
19
|
-
"test": "node --test
|
|
20
|
+
"test": "node --test shared/lib/*.test.js skills/*/script.test.js"
|
|
20
21
|
},
|
|
21
22
|
"keywords": [
|
|
22
23
|
"claude-code",
|
|
24
|
+
"codex",
|
|
23
25
|
"crush",
|
|
24
26
|
"opencode",
|
|
25
27
|
"anthropic",
|