@crewpilot/agent 2.0.0 → 3.0.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.
Files changed (27) hide show
  1. package/README.md +131 -131
  2. package/dist-npm/cli.js +5 -5
  3. package/dist-npm/index.js +100 -100
  4. package/package.json +69 -69
  5. package/prompts/agent.md +282 -282
  6. package/prompts/copilot-instructions.md +36 -36
  7. package/prompts/{catalyst.config.json → crewpilot.config.json} +72 -72
  8. package/prompts/skills/assure-code-quality/SKILL.md +112 -112
  9. package/prompts/skills/assure-pr-intelligence/SKILL.md +148 -148
  10. package/prompts/skills/assure-review-functional/SKILL.md +114 -114
  11. package/prompts/skills/assure-review-standards/SKILL.md +106 -106
  12. package/prompts/skills/assure-threat-model/SKILL.md +182 -182
  13. package/prompts/skills/assure-vulnerability-scan/SKILL.md +146 -146
  14. package/prompts/skills/autopilot-meeting/SKILL.md +434 -434
  15. package/prompts/skills/autopilot-worker/SKILL.md +737 -737
  16. package/prompts/skills/daily-digest/SKILL.md +188 -188
  17. package/prompts/skills/deliver-change-management/SKILL.md +132 -132
  18. package/prompts/skills/deliver-deploy-guard/SKILL.md +144 -144
  19. package/prompts/skills/deliver-doc-governance/SKILL.md +130 -130
  20. package/prompts/skills/engineer-feature-builder/SKILL.md +270 -270
  21. package/prompts/skills/engineer-root-cause-analysis/SKILL.md +150 -150
  22. package/prompts/skills/engineer-test-first/SKILL.md +148 -148
  23. package/prompts/skills/insights-knowledge-base/SKILL.md +202 -202
  24. package/prompts/skills/insights-pattern-detection/SKILL.md +142 -142
  25. package/prompts/skills/strategize-architecture-planner/SKILL.md +141 -141
  26. package/prompts/skills/strategize-solution-design/SKILL.md +118 -118
  27. package/scripts/postinstall.js +108 -108
@@ -1,118 +1,118 @@
1
- # Solution Design
2
-
3
- > **Pillar**: Strategize | **ID**: `strategize-solution-design`
4
-
5
- ## Purpose
6
-
7
- Structured ideation and trade-off analysis for technical decisions. Transforms vague questions into evaluated options with clear recommendations.
8
-
9
- ## Activation Triggers
10
-
11
- - "brainstorm", "explore options", "what are the approaches", "tradeoffs", "should I use X or Y"
12
- - Any open-ended technical question with multiple viable paths
13
-
14
- ## Methodology
15
-
16
- ### Process Flow
17
-
18
- ```dot
19
- digraph solution_design {
20
- rankdir=TB;
21
- node [shape=box];
22
-
23
- frame [label="Phase 1\nProblem Framing"];
24
- options [label="Phase 2\nOption Generation\n(3-4 approaches)"];
25
- matrix [label="Phase 3\nTrade-off Matrix"];
26
- recommend [label="Phase 4\nRecommendation", shape=diamond, style=filled, fillcolor="#ffcccc"];
27
- arch [label="architecture-planner", shape=doublecircle];
28
- build [label="feature-builder", shape=doublecircle];
29
-
30
- frame -> options;
31
- options -> matrix;
32
- matrix -> recommend;
33
- recommend -> arch [label="needs detailed design"];
34
- recommend -> build [label="ready to implement"];
35
- recommend -> options [label="user rejects\nall options"];
36
- }
37
- ```
38
-
39
- ### Phase 1 — Problem Framing
40
- 1. Restate the problem in one sentence
41
- 2. Identify constraints: time, team size, existing tech stack, scale requirements
42
- 3. Ask 1-2 clarifying questions ONLY if the problem is genuinely ambiguous
43
-
44
- ### Phase 2 — Option Generation
45
- 1. Generate 3-4 distinct approaches (configurable via `max_options` in config)
46
- 2. Each option must include:
47
- - **Name**: Short memorable label
48
- - **Approach**: 2-3 sentence description
49
- - **Strengths**: What it does well
50
- - **Risks**: What could go wrong
51
- - **Effort**: T-shirt size (S/M/L/XL) with justification
52
- 3. Options must be genuinely different — not variations of the same approach
53
-
54
- ### Phase 3 — Trade-off Matrix
55
- Build a comparison table:
56
-
57
- | Criterion | Option A | Option B | Option C |
58
- |---|---|---|---|
59
- | Implementation effort | | | |
60
- | Maintainability | | | |
61
- | Performance | | | |
62
- | Team familiarity | | | |
63
-
64
- Rate each cell: `++` (strong), `+` (good), `~` (neutral), `-` (weak), `--` (poor)
65
-
66
- ### Phase 4 — Recommendation
67
-
68
- <HARD-GATE>
69
- Do NOT proceed to implementation or architecture planning until the user has reviewed the trade-off matrix and confirmed the recommended option.
70
- Present the recommendation and wait for explicit approval or selection.
71
- </HARD-GATE>
72
-
73
- 1. State the recommended option clearly
74
- 2. Provide confidence level (1-10) with reasoning
75
- 3. Identify the "decision reversal cost" — how hard is it to switch later
76
- 4. List 1-2 things to validate before committing
77
-
78
- ## Tools Required
79
-
80
- - `codebase` — Scan existing stack for constraints
81
- - `fetch` — Pull external docs/benchmarks when comparing technologies
82
- - `catalyst_knowledge_search` — Check if similar decisions were made before
83
-
84
- ## Output Format
85
-
86
- ```
87
- ## [Catalyst → Solution Design]
88
-
89
- ### Problem
90
- {one-sentence problem statement}
91
-
92
- ### Options
93
- 1. **{Name}** — {approach}
94
- - Strengths: ...
95
- - Risks: ...
96
- - Effort: {T-shirt}
97
-
98
- ### Trade-off Matrix
99
- {table}
100
-
101
- ### Recommendation
102
- **{Option Name}** (Confidence: {N}/10)
103
- {reasoning}
104
-
105
- **Reversal cost**: {Low/Medium/High}
106
- **Validate first**: {list}
107
- ```
108
-
109
- ## Chains To
110
-
111
- - `architecture-planner` — When the recommended option needs detailed design
112
- - `feature-builder` — When the user wants to start implementing immediately
113
-
114
- ## Anti-Patterns
115
-
116
- - Do NOT generate options just to fill a quota — 2 genuine options beat 4 padded ones
117
- - Do NOT recommend without stating confidence and reversal cost
118
- - Do NOT skip the trade-off matrix — it's the core value of this skill
1
+ # Solution Design
2
+
3
+ > **Pillar**: Strategize | **ID**: `strategize-solution-design`
4
+
5
+ ## Purpose
6
+
7
+ Structured ideation and trade-off analysis for technical decisions. Transforms vague questions into evaluated options with clear recommendations.
8
+
9
+ ## Activation Triggers
10
+
11
+ - "brainstorm", "explore options", "what are the approaches", "tradeoffs", "should I use X or Y"
12
+ - Any open-ended technical question with multiple viable paths
13
+
14
+ ## Methodology
15
+
16
+ ### Process Flow
17
+
18
+ ```dot
19
+ digraph solution_design {
20
+ rankdir=TB;
21
+ node [shape=box];
22
+
23
+ frame [label="Phase 1\nProblem Framing"];
24
+ options [label="Phase 2\nOption Generation\n(3-4 approaches)"];
25
+ matrix [label="Phase 3\nTrade-off Matrix"];
26
+ recommend [label="Phase 4\nRecommendation", shape=diamond, style=filled, fillcolor="#ffcccc"];
27
+ arch [label="architecture-planner", shape=doublecircle];
28
+ build [label="feature-builder", shape=doublecircle];
29
+
30
+ frame -> options;
31
+ options -> matrix;
32
+ matrix -> recommend;
33
+ recommend -> arch [label="needs detailed design"];
34
+ recommend -> build [label="ready to implement"];
35
+ recommend -> options [label="user rejects\nall options"];
36
+ }
37
+ ```
38
+
39
+ ### Phase 1 — Problem Framing
40
+ 1. Restate the problem in one sentence
41
+ 2. Identify constraints: time, team size, existing tech stack, scale requirements
42
+ 3. Ask 1-2 clarifying questions ONLY if the problem is genuinely ambiguous
43
+
44
+ ### Phase 2 — Option Generation
45
+ 1. Generate 3-4 distinct approaches (configurable via `max_options` in config)
46
+ 2. Each option must include:
47
+ - **Name**: Short memorable label
48
+ - **Approach**: 2-3 sentence description
49
+ - **Strengths**: What it does well
50
+ - **Risks**: What could go wrong
51
+ - **Effort**: T-shirt size (S/M/L/XL) with justification
52
+ 3. Options must be genuinely different — not variations of the same approach
53
+
54
+ ### Phase 3 — Trade-off Matrix
55
+ Build a comparison table:
56
+
57
+ | Criterion | Option A | Option B | Option C |
58
+ |---|---|---|---|
59
+ | Implementation effort | | | |
60
+ | Maintainability | | | |
61
+ | Performance | | | |
62
+ | Team familiarity | | | |
63
+
64
+ Rate each cell: `++` (strong), `+` (good), `~` (neutral), `-` (weak), `--` (poor)
65
+
66
+ ### Phase 4 — Recommendation
67
+
68
+ <HARD-GATE>
69
+ Do NOT proceed to implementation or architecture planning until the user has reviewed the trade-off matrix and confirmed the recommended option.
70
+ Present the recommendation and wait for explicit approval or selection.
71
+ </HARD-GATE>
72
+
73
+ 1. State the recommended option clearly
74
+ 2. Provide confidence level (1-10) with reasoning
75
+ 3. Identify the "decision reversal cost" — how hard is it to switch later
76
+ 4. List 1-2 things to validate before committing
77
+
78
+ ## Tools Required
79
+
80
+ - `codebase` — Scan existing stack for constraints
81
+ - `fetch` — Pull external docs/benchmarks when comparing technologies
82
+ - `crewpilot_knowledge_search` — Check if similar decisions were made before
83
+
84
+ ## Output Format
85
+
86
+ ```
87
+ ## [CrewPilot → Solution Design]
88
+
89
+ ### Problem
90
+ {one-sentence problem statement}
91
+
92
+ ### Options
93
+ 1. **{Name}** — {approach}
94
+ - Strengths: ...
95
+ - Risks: ...
96
+ - Effort: {T-shirt}
97
+
98
+ ### Trade-off Matrix
99
+ {table}
100
+
101
+ ### Recommendation
102
+ **{Option Name}** (Confidence: {N}/10)
103
+ {reasoning}
104
+
105
+ **Reversal cost**: {Low/Medium/High}
106
+ **Validate first**: {list}
107
+ ```
108
+
109
+ ## Chains To
110
+
111
+ - `architecture-planner` — When the recommended option needs detailed design
112
+ - `feature-builder` — When the user wants to start implementing immediately
113
+
114
+ ## Anti-Patterns
115
+
116
+ - Do NOT generate options just to fill a quota — 2 genuine options beat 4 padded ones
117
+ - Do NOT recommend without stating confidence and reversal cost
118
+ - Do NOT skip the trade-off matrix — it's the core value of this skill
@@ -1,108 +1,108 @@
1
- /**
2
- * postinstall.js — Runs after `npm install @crewpilot/agent`
3
- *
4
- * Creates .github/ files in the user's project so @Catalyst agent
5
- * appears in Copilot Chat dropdown automatically.
6
- *
7
- * Uses INIT_CWD (set by npm to the directory where `npm install` was run).
8
- * Silently exits on global installs or npx (no project root).
9
- */
10
-
11
- import fs from 'fs';
12
- import path from 'path';
13
- import { fileURLToPath } from 'url';
14
-
15
- const __dirname = path.dirname(fileURLToPath(import.meta.url));
16
-
17
- // INIT_CWD is the directory where the user ran `npm install`
18
- const projectRoot = process.env.INIT_CWD;
19
-
20
- // Skip if no project root (global install, npx, CI, etc.)
21
- if (!projectRoot) {
22
- process.exit(0);
23
- }
24
-
25
- // Skip if installing as a dependency of this package itself (dev scenario)
26
- const ownPackageDir = path.join(__dirname, '..');
27
- if (path.resolve(projectRoot) === path.resolve(ownPackageDir)) {
28
- process.exit(0);
29
- }
30
-
31
- // Skip if no package.json in project root (not a real project)
32
- if (!fs.existsSync(path.join(projectRoot, 'package.json'))) {
33
- process.exit(0);
34
- }
35
-
36
- const githubDir = path.join(projectRoot, '.github');
37
- const promptsDir = path.join(__dirname, '..', 'prompts');
38
-
39
- // If prompts aren't bundled, silently exit
40
- if (!fs.existsSync(promptsDir)) {
41
- process.exit(0);
42
- }
43
-
44
- let created = 0;
45
- let skipped = 0;
46
-
47
- /**
48
- * Copy a file from prompts/ to .github/ — never overwrites existing files
49
- */
50
- function syncFile(srcName, destRelative) {
51
- const src = path.join(promptsDir, srcName);
52
- const dest = path.join(githubDir, destRelative);
53
-
54
- if (!fs.existsSync(src)) return;
55
-
56
- if (fs.existsSync(dest)) {
57
- skipped++;
58
- return;
59
- }
60
-
61
- fs.mkdirSync(path.dirname(dest), { recursive: true });
62
- fs.copyFileSync(src, dest);
63
- created++;
64
- }
65
-
66
- /**
67
- * Copy all skills from prompts/skills/ to .github/skills/
68
- */
69
- function syncSkills() {
70
- const skillsDir = path.join(promptsDir, 'skills');
71
- if (!fs.existsSync(skillsDir)) return;
72
-
73
- const skillDirs = fs.readdirSync(skillsDir).filter(d =>
74
- fs.statSync(path.join(skillsDir, d)).isDirectory()
75
- );
76
-
77
- for (const name of skillDirs) {
78
- const src = path.join(skillsDir, name, 'SKILL.md');
79
- if (!fs.existsSync(src)) continue;
80
-
81
- const dest = path.join(githubDir, 'skills', name, 'SKILL.md');
82
- if (fs.existsSync(dest)) {
83
- skipped++;
84
- continue;
85
- }
86
-
87
- fs.mkdirSync(path.dirname(dest), { recursive: true });
88
- fs.copyFileSync(src, dest);
89
- created++;
90
- }
91
- }
92
-
93
- // --- Run ---
94
- try {
95
- fs.mkdirSync(githubDir, { recursive: true });
96
-
97
- syncFile('agent.md', path.join('agents', 'catalyst.md'));
98
- syncFile('copilot-instructions.md', 'copilot-instructions.md');
99
- syncFile('catalyst.config.json', 'catalyst.config.json');
100
- syncSkills();
101
-
102
- if (created > 0) {
103
- console.log(`\n ⚡ CrewPilot: Created ${created} file(s) in .github/ (${skipped} already existed)`);
104
- console.log(' ⚡ Open Copilot Chat and select @Catalyst from the agent dropdown\n');
105
- }
106
- } catch {
107
- // Silently fail — postinstall should never break npm install
108
- }
1
+ /**
2
+ * postinstall.js — Runs after `npm install @crewpilot/agent`
3
+ *
4
+ * Creates .github/ files in the user's project so @CrewPilot agent
5
+ * appears in Copilot Chat dropdown automatically.
6
+ *
7
+ * Uses INIT_CWD (set by npm to the directory where `npm install` was run).
8
+ * Silently exits on global installs or npx (no project root).
9
+ */
10
+
11
+ import fs from 'fs';
12
+ import path from 'path';
13
+ import { fileURLToPath } from 'url';
14
+
15
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
16
+
17
+ // INIT_CWD is the directory where the user ran `npm install`
18
+ const projectRoot = process.env.INIT_CWD;
19
+
20
+ // Skip if no project root (global install, npx, CI, etc.)
21
+ if (!projectRoot) {
22
+ process.exit(0);
23
+ }
24
+
25
+ // Skip if installing as a dependency of this package itself (dev scenario)
26
+ const ownPackageDir = path.join(__dirname, '..');
27
+ if (path.resolve(projectRoot) === path.resolve(ownPackageDir)) {
28
+ process.exit(0);
29
+ }
30
+
31
+ // Skip if no package.json in project root (not a real project)
32
+ if (!fs.existsSync(path.join(projectRoot, 'package.json'))) {
33
+ process.exit(0);
34
+ }
35
+
36
+ const githubDir = path.join(projectRoot, '.github');
37
+ const promptsDir = path.join(__dirname, '..', 'prompts');
38
+
39
+ // If prompts aren't bundled, silently exit
40
+ if (!fs.existsSync(promptsDir)) {
41
+ process.exit(0);
42
+ }
43
+
44
+ let created = 0;
45
+ let skipped = 0;
46
+
47
+ /**
48
+ * Copy a file from prompts/ to .github/ — never overwrites existing files
49
+ */
50
+ function syncFile(srcName, destRelative) {
51
+ const src = path.join(promptsDir, srcName);
52
+ const dest = path.join(githubDir, destRelative);
53
+
54
+ if (!fs.existsSync(src)) return;
55
+
56
+ if (fs.existsSync(dest)) {
57
+ skipped++;
58
+ return;
59
+ }
60
+
61
+ fs.mkdirSync(path.dirname(dest), { recursive: true });
62
+ fs.copyFileSync(src, dest);
63
+ created++;
64
+ }
65
+
66
+ /**
67
+ * Copy all skills from prompts/skills/ to .github/skills/
68
+ */
69
+ function syncSkills() {
70
+ const skillsDir = path.join(promptsDir, 'skills');
71
+ if (!fs.existsSync(skillsDir)) return;
72
+
73
+ const skillDirs = fs.readdirSync(skillsDir).filter(d =>
74
+ fs.statSync(path.join(skillsDir, d)).isDirectory()
75
+ );
76
+
77
+ for (const name of skillDirs) {
78
+ const src = path.join(skillsDir, name, 'SKILL.md');
79
+ if (!fs.existsSync(src)) continue;
80
+
81
+ const dest = path.join(githubDir, 'skills', name, 'SKILL.md');
82
+ if (fs.existsSync(dest)) {
83
+ skipped++;
84
+ continue;
85
+ }
86
+
87
+ fs.mkdirSync(path.dirname(dest), { recursive: true });
88
+ fs.copyFileSync(src, dest);
89
+ created++;
90
+ }
91
+ }
92
+
93
+ // --- Run ---
94
+ try {
95
+ fs.mkdirSync(githubDir, { recursive: true });
96
+
97
+ syncFile('agent.md', path.join('agents', 'crewpilot.md'));
98
+ syncFile('copilot-instructions.md', 'copilot-instructions.md');
99
+ syncFile('crewpilot.config.json', 'crewpilot.config.json');
100
+ syncSkills();
101
+
102
+ if (created > 0) {
103
+ console.log(`\n ⚡ CrewPilot: Created ${created} file(s) in .github/ (${skipped} already existed)`);
104
+ console.log(' ⚡ Open Copilot Chat and select @CrewPilot from the agent dropdown\n');
105
+ }
106
+ } catch {
107
+ // Silently fail — postinstall should never break npm install
108
+ }