fraim-framework 1.0.6 → 1.0.8
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/package.json +1 -1
- package/setup.js +108 -18
- package/docs/guides/getting-started.md +0 -175
package/package.json
CHANGED
package/setup.js
CHANGED
|
@@ -94,6 +94,79 @@ function askQuestion(question, defaultValue = 'y') {
|
|
|
94
94
|
});
|
|
95
95
|
}
|
|
96
96
|
|
|
97
|
+
function createProjectStructure() {
|
|
98
|
+
// Create retrospectives folder
|
|
99
|
+
ensureDirectory('retrospectives');
|
|
100
|
+
logSuccess('Created retrospectives folder');
|
|
101
|
+
|
|
102
|
+
// Create docs/rfcs folder
|
|
103
|
+
ensureDirectory('docs/rfcs');
|
|
104
|
+
logSuccess('Created docs/rfcs folder');
|
|
105
|
+
|
|
106
|
+
// Create BUGFIX template
|
|
107
|
+
const bugfixTemplate = `Issue: #<issue>
|
|
108
|
+
|
|
109
|
+
## Impact of the Bug
|
|
110
|
+
|
|
111
|
+
## Repro Steps
|
|
112
|
+
|
|
113
|
+
## Root Cause
|
|
114
|
+
|
|
115
|
+
## Fix
|
|
116
|
+
|
|
117
|
+
## Tests
|
|
118
|
+
- Could be existing tests that are failing and need to be fixed
|
|
119
|
+
- Could be new tests that need to be added into an existing test suite
|
|
120
|
+
- Could be a new test suite
|
|
121
|
+
`;
|
|
122
|
+
writeFile('docs/rfcs/BUGFIX-TEMPLATE.md', bugfixTemplate);
|
|
123
|
+
logSuccess('Created BUGFIX-TEMPLATE.md');
|
|
124
|
+
|
|
125
|
+
// Create RFC template
|
|
126
|
+
const rfcTemplate = `# RFC: <Title>
|
|
127
|
+
|
|
128
|
+
Issue: #<issue>
|
|
129
|
+
Owner: <agent>
|
|
130
|
+
|
|
131
|
+
## Customer
|
|
132
|
+
|
|
133
|
+
## Customer Outcome
|
|
134
|
+
|
|
135
|
+
## Customer Problem being solved
|
|
136
|
+
|
|
137
|
+
## Solution
|
|
138
|
+
|
|
139
|
+
## Alternatives
|
|
140
|
+
|
|
141
|
+
## Design Details
|
|
142
|
+
- User Experience changes (incl. all modalities currently supported: see codebase to know which ones)
|
|
143
|
+
- API surface (OpenAPI) changes
|
|
144
|
+
- Data model / schema changes
|
|
145
|
+
- Failure modes & timeouts
|
|
146
|
+
- Telemetry & analytics
|
|
147
|
+
|
|
148
|
+
## Test Matrix
|
|
149
|
+
- Unit: modules & edge cases
|
|
150
|
+
- Integration: API <-> DB <-> external
|
|
151
|
+
- E2E: user flows (happy/sad)
|
|
152
|
+
|
|
153
|
+
## Risks & Mitigations
|
|
154
|
+
|
|
155
|
+
## Observability (logs, metrics, alerts)
|
|
156
|
+
|
|
157
|
+
## Phased Delivery Plan
|
|
158
|
+
- Do not incude timelines
|
|
159
|
+
- Do include the following for each phase:
|
|
160
|
+
- Deliverable
|
|
161
|
+
- Value delivered by deliverable
|
|
162
|
+
- What will be tested
|
|
163
|
+
`;
|
|
164
|
+
writeFile('docs/rfcs/RFC-TEMPLATE.md', rfcTemplate);
|
|
165
|
+
logSuccess('Created RFC-TEMPLATE.md');
|
|
166
|
+
|
|
167
|
+
logSuccess('Project structure created');
|
|
168
|
+
}
|
|
169
|
+
|
|
97
170
|
function createGitHubLabels() {
|
|
98
171
|
const labels = [
|
|
99
172
|
{ name: 'phase:design', color: '0e8a16', description: 'Design phase - RFC creation and review' },
|
|
@@ -248,29 +321,35 @@ jobs:
|
|
|
248
321
|
}
|
|
249
322
|
|
|
250
323
|
function createAgentFolders() {
|
|
324
|
+
// Get the directory where this script is located (FRAIM package directory)
|
|
325
|
+
const fraimDir = __dirname;
|
|
326
|
+
|
|
251
327
|
// Create .cursor folder at top level with all contents
|
|
252
|
-
|
|
253
|
-
|
|
328
|
+
const cursorSrc = path.join(fraimDir, 'agents', 'cursor');
|
|
329
|
+
if (fs.existsSync(cursorSrc)) {
|
|
330
|
+
copyDirectory(cursorSrc, '.cursor');
|
|
254
331
|
logSuccess('Created .cursor folder with all contents');
|
|
255
332
|
} else {
|
|
256
|
-
logWarning(
|
|
333
|
+
logWarning(`agents/cursor directory not found at ${cursorSrc}, skipping .cursor creation`);
|
|
257
334
|
}
|
|
258
335
|
|
|
259
336
|
// Create .windsurf folder at top level with all contents
|
|
260
|
-
|
|
261
|
-
|
|
337
|
+
const windsurfSrc = path.join(fraimDir, 'agents', 'windsurf');
|
|
338
|
+
if (fs.existsSync(windsurfSrc)) {
|
|
339
|
+
copyDirectory(windsurfSrc, '.windsurf');
|
|
262
340
|
logSuccess('Created .windsurf folder with all contents');
|
|
263
341
|
} else {
|
|
264
|
-
logWarning(
|
|
342
|
+
logWarning(`agents/windsurf directory not found at ${windsurfSrc}, skipping .windsurf creation`);
|
|
265
343
|
}
|
|
266
344
|
|
|
267
345
|
// Create CLAUDE.md at top level
|
|
268
|
-
|
|
269
|
-
|
|
346
|
+
const claudeSrc = path.join(fraimDir, 'agents', 'claude', 'CLAUDE.md');
|
|
347
|
+
if (fs.existsSync(claudeSrc)) {
|
|
348
|
+
const claudeContent = fs.readFileSync(claudeSrc, 'utf8');
|
|
270
349
|
writeFile('CLAUDE.md', claudeContent);
|
|
271
350
|
logSuccess('Created CLAUDE.md at top level');
|
|
272
351
|
} else {
|
|
273
|
-
logWarning(
|
|
352
|
+
logWarning(`agents/claude/CLAUDE.md not found at ${claudeSrc}, skipping CLAUDE.md creation`);
|
|
274
353
|
}
|
|
275
354
|
}
|
|
276
355
|
|
|
@@ -305,8 +384,18 @@ async function runWizard() {
|
|
|
305
384
|
return;
|
|
306
385
|
}
|
|
307
386
|
|
|
308
|
-
// Step 2:
|
|
309
|
-
logStep('Step 2:
|
|
387
|
+
// Step 2: Project Structure
|
|
388
|
+
logStep('Step 2: Project Structure');
|
|
389
|
+
const setupStructure = await askQuestion('Would you like to create project structure (retrospectives, docs/rfcs with templates)?', 'y');
|
|
390
|
+
|
|
391
|
+
if (setupStructure === 'y' || setupStructure === 'yes') {
|
|
392
|
+
createProjectStructure();
|
|
393
|
+
} else {
|
|
394
|
+
logInfo('Skipping project structure setup');
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
// Step 3: AI Agent Setup
|
|
398
|
+
logStep('Step 3: AI Agent Configuration');
|
|
310
399
|
const setupAgents = await askQuestion('Would you like to set up AI agent configurations (.cursor, .windsurf, CLAUDE.md)?', 'y');
|
|
311
400
|
|
|
312
401
|
if (setupAgents === 'y' || setupAgents === 'yes') {
|
|
@@ -315,8 +404,8 @@ async function runWizard() {
|
|
|
315
404
|
logInfo('Skipping AI agent setup');
|
|
316
405
|
}
|
|
317
406
|
|
|
318
|
-
// Step
|
|
319
|
-
logStep('Step
|
|
407
|
+
// Step 4: GitHub Workflows
|
|
408
|
+
logStep('Step 4: GitHub Workflows');
|
|
320
409
|
const setupWorkflows = await askQuestion('Would you like to set up GitHub workflows for automation?', 'y');
|
|
321
410
|
|
|
322
411
|
if (setupWorkflows === 'y' || setupWorkflows === 'yes') {
|
|
@@ -326,8 +415,8 @@ async function runWizard() {
|
|
|
326
415
|
logInfo('Skipping GitHub workflow setup');
|
|
327
416
|
}
|
|
328
417
|
|
|
329
|
-
// Step
|
|
330
|
-
logStep('Step
|
|
418
|
+
// Step 5: GitHub Labels
|
|
419
|
+
logStep('Step 5: GitHub Labels');
|
|
331
420
|
if (ghAvailable) {
|
|
332
421
|
const setupLabels = await askQuestion('Would you like to create GitHub labels for FRAIM?', 'y');
|
|
333
422
|
|
|
@@ -341,8 +430,8 @@ async function runWizard() {
|
|
|
341
430
|
createLabelsConfigFile();
|
|
342
431
|
}
|
|
343
432
|
|
|
344
|
-
// Step
|
|
345
|
-
logStep('Step
|
|
433
|
+
// Step 6: Summary
|
|
434
|
+
logStep('Step 6: Setup Summary');
|
|
346
435
|
logHeader('🎉 Setup Complete!');
|
|
347
436
|
logSuccess('FRAIM has been successfully set up in your repository!');
|
|
348
437
|
logInfo('Next steps:');
|
|
@@ -392,6 +481,7 @@ function runSetup() {
|
|
|
392
481
|
}
|
|
393
482
|
|
|
394
483
|
// Create everything at once
|
|
484
|
+
createProjectStructure();
|
|
395
485
|
ensureDirectory('.github/workflows');
|
|
396
486
|
createAgentFolders();
|
|
397
487
|
createGitHubWorkflows();
|
|
@@ -422,4 +512,4 @@ if (require.main === module) {
|
|
|
422
512
|
runSetup();
|
|
423
513
|
}
|
|
424
514
|
|
|
425
|
-
module.exports = { runSetup, runWizard };
|
|
515
|
+
module.exports = { runSetup, runWizard, createProjectStructure };
|
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
# 🚀 Getting Started with FRAIM
|
|
2
|
-
|
|
3
|
-
**Framework for Rigor-based AI Management**
|
|
4
|
-
|
|
5
|
-
Welcome to FRAIM! This guide will transform you from a developer into an AI manager in under 30 seconds.
|
|
6
|
-
|
|
7
|
-
## 🚀 Quick Start (30 seconds)
|
|
8
|
-
|
|
9
|
-
### 1. Navigate to Your Repository
|
|
10
|
-
```bash
|
|
11
|
-
cd your-project
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
### 2. Setup FRAIM
|
|
15
|
-
```bash
|
|
16
|
-
npx @fraim/framework init
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
### 3. Create Your First AI-Managed Issue
|
|
20
|
-
```bash
|
|
21
|
-
gh issue create --title "Add user authentication" --label "phase:design,ai-agent:claude"
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
### 4. Watch the Magic Happen! 🎉
|
|
25
|
-
|
|
26
|
-
GitHub automatically:
|
|
27
|
-
- 🔄 Creates branch: `feature/1-add-user-authentication`
|
|
28
|
-
- 🔄 Creates draft PR
|
|
29
|
-
- 🔄 Sets status: `status:wip`
|
|
30
|
-
- 🤖 Claude starts working on RFC
|
|
31
|
-
|
|
32
|
-
## 🤖 AI Agent Coordination
|
|
33
|
-
|
|
34
|
-
FRAIM coordinates three types of AI agents, each with specific roles:
|
|
35
|
-
|
|
36
|
-
### Cursor (IDE Development)
|
|
37
|
-
- **Role**: Implementation and testing
|
|
38
|
-
- **Strengths**: Code generation, testing, IDE integration
|
|
39
|
-
- **Best For**: `phase:impl` tasks
|
|
40
|
-
|
|
41
|
-
### Claude (Conversational AI)
|
|
42
|
-
- **Role**: Design and RFC creation
|
|
43
|
-
- **Strengths**: Natural language, documentation, architecture
|
|
44
|
-
- **Best For**: `phase:design` tasks
|
|
45
|
-
|
|
46
|
-
### Windsurf (Code Understanding)
|
|
47
|
-
- **Role**: Performance and integration
|
|
48
|
-
- **Strengths**: Code analysis, optimization, system integration
|
|
49
|
-
- **Best For**: `phase:tests` and optimization tasks
|
|
50
|
-
|
|
51
|
-
## 📋 Workflow Phases
|
|
52
|
-
|
|
53
|
-
### Phase 1: Design (`phase:design`)
|
|
54
|
-
1. **Create Issue**: Describe the feature or bug
|
|
55
|
-
2. **Add Labels**: `phase:design` + `ai-agent:claude`
|
|
56
|
-
3. **AI Action**: Claude creates RFC and architecture docs
|
|
57
|
-
4. **Review**: Stakeholders review and approve design
|
|
58
|
-
5. **Transition**: Change to `phase:impl` + `ai-agent:cursor`
|
|
59
|
-
|
|
60
|
-
### Phase 2: Implementation (`phase:impl`)
|
|
61
|
-
1. **AI Action**: Cursor implements the feature
|
|
62
|
-
2. **Testing**: Comprehensive test coverage
|
|
63
|
-
3. **Documentation**: Code comments and updates
|
|
64
|
-
4. **Review**: Code review and validation
|
|
65
|
-
5. **Transition**: Change to `phase:tests` + `ai-agent:windsurf`
|
|
66
|
-
|
|
67
|
-
### Phase 3: Testing (`phase:tests`)
|
|
68
|
-
1. **AI Action**: Windsurf validates implementation
|
|
69
|
-
2. **Performance**: Performance testing and optimization
|
|
70
|
-
3. **Integration**: System integration testing
|
|
71
|
-
4. **Validation**: Final validation against requirements
|
|
72
|
-
5. **Completion**: Mark as `status:complete`
|
|
73
|
-
|
|
74
|
-
## 🏷️ Label System
|
|
75
|
-
|
|
76
|
-
### Phase Labels
|
|
77
|
-
- `phase:design` - Design and RFC creation
|
|
78
|
-
- `phase:impl` - Implementation and development
|
|
79
|
-
- `phase:tests` - Testing and validation
|
|
80
|
-
|
|
81
|
-
### Status Labels
|
|
82
|
-
- `status:wip` - Work in progress
|
|
83
|
-
- `status:needs-review` - Ready for review
|
|
84
|
-
- `status:complete` - Work completed
|
|
85
|
-
|
|
86
|
-
### Agent Labels
|
|
87
|
-
- `ai-agent:cursor` - Assigned to Cursor
|
|
88
|
-
- `ai-agent:claude` - Assigned to Claude
|
|
89
|
-
- `ai-agent:windsurf` - Assigned to Windsurf
|
|
90
|
-
|
|
91
|
-
### Priority Labels (Optional)
|
|
92
|
-
- `priority:critical` - Critical priority
|
|
93
|
-
- `priority:high` - High priority
|
|
94
|
-
- `priority:medium` - Medium priority
|
|
95
|
-
- `priority:low` - Low priority
|
|
96
|
-
|
|
97
|
-
## 🔧 Advanced Setup
|
|
98
|
-
|
|
99
|
-
### Interactive Wizard
|
|
100
|
-
```bash
|
|
101
|
-
npx @fraim/framework wizard
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
The wizard will ask you:
|
|
105
|
-
- Which AI agents to enable
|
|
106
|
-
- Whether to enable deployment workflows
|
|
107
|
-
- Whether to run in dry-run mode first
|
|
108
|
-
|
|
109
|
-
### Custom Configuration
|
|
110
|
-
```bash
|
|
111
|
-
npx @fraim/framework setup owner/repository --config custom-config.json
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
### Partial Setup
|
|
115
|
-
```bash
|
|
116
|
-
# Only create labels
|
|
117
|
-
npx @fraim/framework setup owner/repository --labels-only
|
|
118
|
-
|
|
119
|
-
# Only setup workflows
|
|
120
|
-
npx @fraim/framework setup owner/repository --workflows-only
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
## 📚 Next Steps
|
|
124
|
-
|
|
125
|
-
### 1. Explore Documentation
|
|
126
|
-
- [🧠 RIGOR Methodology](../../README.md#-the-rigor-methodology)
|
|
127
|
-
- [🤖 AI Agent Rules](../../agents/)
|
|
128
|
-
- [🏗️ Framework Overview](../../README.md#-framework-structure)
|
|
129
|
-
|
|
130
|
-
### 2. Try Different Workflows
|
|
131
|
-
- Create issues with different phase/agent combinations
|
|
132
|
-
- Experiment with the label system
|
|
133
|
-
- Practice phase transitions
|
|
134
|
-
|
|
135
|
-
### 3. Customize for Your Team
|
|
136
|
-
- Adjust agent assignments based on team strengths
|
|
137
|
-
- Customize workflows for your development process
|
|
138
|
-
- Add team-specific labels and processes
|
|
139
|
-
|
|
140
|
-
### 4. Scale Up
|
|
141
|
-
- Apply FRAIM to multiple repositories
|
|
142
|
-
- Train your team on the methodology
|
|
143
|
-
- Integrate with existing CI/CD pipelines
|
|
144
|
-
|
|
145
|
-
## 🎯 Success Metrics
|
|
146
|
-
|
|
147
|
-
### Individual Level
|
|
148
|
-
- **Setup Time**: < 30 seconds to get started
|
|
149
|
-
- **Issue Resolution**: Faster development cycles
|
|
150
|
-
- **Code Quality**: Higher quality through AI coordination
|
|
151
|
-
- **Learning**: Better understanding of AI capabilities
|
|
152
|
-
|
|
153
|
-
### Team Level
|
|
154
|
-
- **Coordination**: Seamless AI agent collaboration
|
|
155
|
-
- **Consistency**: Standardized development processes
|
|
156
|
-
- **Visibility**: Clear progress tracking and status
|
|
157
|
-
- **Efficiency**: Reduced manual coordination overhead
|
|
158
|
-
|
|
159
|
-
### Organization Level
|
|
160
|
-
- **Scalability**: Framework grows with your organization
|
|
161
|
-
- **Compliance**: Audit trails and process documentation
|
|
162
|
-
- **Innovation**: Faster adoption of new AI capabilities
|
|
163
|
-
- **Competitive Advantage**: Professional AI management capabilities
|
|
164
|
-
|
|
165
|
-
## 🚀 Ready to Become an AI Manager?
|
|
166
|
-
|
|
167
|
-
```bash
|
|
168
|
-
npx @fraim/framework init
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
**FRAIM: Where humans become AI managers through rigorous methodology**
|
|
172
|
-
|
|
173
|
-
---
|
|
174
|
-
|
|
175
|
-
*Need help? Check the [main README](../../README.md) or [contact the team](https://github.com/mathursrus/Ashley-Calendar-AI/issues).*
|