musubix 2.3.7 → 2.4.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/.github/AGENTS.md +242 -0
- package/.github/prompts/sdd-change-apply.prompt.md +283 -0
- package/.github/prompts/sdd-change-archive.prompt.md +241 -0
- package/.github/prompts/sdd-change-init.prompt.md +269 -0
- package/.github/prompts/sdd-design.prompt.md +250 -0
- package/.github/prompts/sdd-implement.prompt.md +387 -0
- package/.github/prompts/sdd-requirements.prompt.md +193 -0
- package/.github/prompts/sdd-review.prompt.md +155 -0
- package/.github/prompts/sdd-security.prompt.md +228 -0
- package/.github/prompts/sdd-steering.prompt.md +269 -0
- package/.github/prompts/sdd-tasks.prompt.md +255 -0
- package/.github/prompts/sdd-test.prompt.md +230 -0
- package/.github/prompts/sdd-validate.prompt.md +304 -0
- package/.github/skills/musubix-adr-generation/SKILL.md +209 -0
- package/.github/skills/musubix-best-practices/SKILL.md +315 -0
- package/.github/skills/musubix-c4-design/SKILL.md +162 -0
- package/.github/skills/musubix-code-generation/SKILL.md +229 -0
- package/.github/skills/musubix-domain-inference/SKILL.md +196 -0
- package/.github/skills/musubix-ears-validation/SKILL.md +161 -0
- package/.github/skills/musubix-sdd-workflow/SKILL.md +210 -0
- package/.github/skills/musubix-technical-writing/SKILL.md +444 -0
- package/.github/skills/musubix-test-generation/SKILL.md +212 -0
- package/.github/skills/musubix-traceability/SKILL.md +141 -0
- package/AGENTS.md +772 -0
- package/LICENSE +21 -0
- package/README.ja.md +302 -0
- package/README.md +310 -44
- package/bin/musubix-mcp.js +15 -0
- package/bin/musubix.js +9 -1
- package/docs/API-REFERENCE.md +1425 -0
- package/docs/GITHUB-ACTIONS-NPM-SETUP.md +132 -0
- package/docs/INSTALL-GUIDE.ja.md +459 -0
- package/docs/INSTALL-GUIDE.md +459 -0
- package/docs/MUSUBI-enhancement_roadmap_20260105.md +651 -0
- package/docs/MUSUBIXv2.2.0-Manual-outline.md +136 -0
- package/docs/MUSUBIXv2.2.0-Manual.md +3123 -0
- package/docs/MUSUBIXv2.3.5-Refactering.md +1310 -0
- package/docs/MUSUBIv1.6.1-enhancement_roadmap_20260105.md +291 -0
- package/docs/MUSUBIv2.2.0-USERGUIDE.md +2079 -0
- package/docs/ROADMAP-v1.5.md +116 -0
- package/docs/SwarmCoding.md +1284 -0
- package/docs/Test-prompt.md +105 -0
- package/docs/USER-GUIDE-v1.8.0.md +2371 -0
- package/docs/USER-GUIDE.ja.md +2147 -0
- package/docs/USER-GUIDE.md +2847 -0
- package/docs/adr/0001-real-time-pattern-learning-architecture-for-v1-5-0.md +75 -0
- package/docs/adr/0002-pattern-sharing-protocol-for-cross-team-collaborat.md +79 -0
- package/docs/adr/0003-owl-2-rl-implementation-strategy-for-advanced-infe.md +90 -0
- package/docs/evolution-from-musubi-to-musubix.md +2170 -0
- package/docs/getting-started-with-sdd.md +1602 -0
- package/docs/moodle-refactering-codegraph-musubix.md +391 -0
- package/docs/moodle-refactering-codegraph.md +278 -0
- package/docs/overview/MUSUBIX-CodeGraph.md +322 -0
- package/docs/overview/MUSUBIX-Core.md +671 -0
- package/docs/overview/MUSUBIX-FormalVerify.md +566 -0
- package/docs/overview/MUSUBIX-Learning.md +837 -0
- package/docs/overview/MUSUBIX-MCP-Server.md +535 -0
- package/docs/overview/MUSUBIX-Overview.md +264 -0
- package/docs/overview/MUSUBIX-Phase1-Complete.md +271 -0
- package/docs/overview/MUSUBIX-Phase2-Complete.md +310 -0
- package/docs/overview/MUSUBIX-Roadmap-v2.md +399 -0
- package/docs/overview/MUSUBIX-Security-Plan.md +939 -0
- package/docs/overview/MUSUBIX-Security-v2.1.md +668 -0
- package/docs/overview/MUSUBIX-Security.md +891 -0
- package/docs/overview/MUSUBIX-YATA.md +666 -0
- package/docs/overview/MUSUBIX-v2.2.0-Advanced-Learning.md +513 -0
- package/docs/overview/Neuro-SymbolicAI.md +159 -0
- package/package.json +72 -51
- package/scripts/generate-quality-gate-report.ts +106 -0
- package/scripts/postinstall.js +94 -0
- package/steering/.musubi-version +1 -0
- package/steering/product.ja.md +572 -0
- package/steering/project.yml +66 -0
- package/steering/rules/constitution.md +412 -0
- package/steering/structure.ja.md +503 -0
- package/steering/tech.ja.md +208 -0
- package/dist/index.d.ts +0 -26
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -75
- package/dist/index.js.map +0 -1
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: musubix-test-generation
|
|
3
|
+
description: Guide for generating test code from designs and requirements. Use this when asked to create unit tests, integration tests, or test coverage analysis following TDD/BDD practices.
|
|
4
|
+
license: MIT
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# MUSUBIX Test Generation Skill
|
|
8
|
+
|
|
9
|
+
This skill guides you through generating comprehensive test suites that maintain traceability.
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
|
|
13
|
+
MUSUBIX follows **Article III - Test-First**: Red-Green-Blue TDD cycle.
|
|
14
|
+
|
|
15
|
+
```mermaid
|
|
16
|
+
flowchart LR
|
|
17
|
+
RED[🔴 Red<br/>Failing Test] --> GREEN[🟢 Green<br/>Minimal Code]
|
|
18
|
+
GREEN --> BLUE[🔵 Blue<br/>Refactor]
|
|
19
|
+
BLUE --> RED
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Test Structure
|
|
23
|
+
|
|
24
|
+
### Unit Test Template
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
/**
|
|
28
|
+
* @requirement REQ-XXX-NNN
|
|
29
|
+
* @design DES-XXX-NNN
|
|
30
|
+
*/
|
|
31
|
+
import { describe, it, expect, beforeEach } from 'vitest';
|
|
32
|
+
import { XxxService } from './xxx-service.js';
|
|
33
|
+
import { resetXxxCounter } from './xxx-entity.js';
|
|
34
|
+
|
|
35
|
+
describe('XxxService', () => {
|
|
36
|
+
let service: XxxService;
|
|
37
|
+
let repository: MockXxxRepository;
|
|
38
|
+
|
|
39
|
+
beforeEach(() => {
|
|
40
|
+
// BP-TEST-001: Reset counters before each test
|
|
41
|
+
resetXxxCounter();
|
|
42
|
+
repository = new MockXxxRepository();
|
|
43
|
+
service = new XxxService(repository);
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
describe('create', () => {
|
|
47
|
+
it('should create entity with valid input', async () => {
|
|
48
|
+
// Arrange
|
|
49
|
+
const input = { name: 'Test', value: 100 };
|
|
50
|
+
|
|
51
|
+
// Act
|
|
52
|
+
const result = await service.create(input);
|
|
53
|
+
|
|
54
|
+
// Assert
|
|
55
|
+
expect(result.isOk()).toBe(true);
|
|
56
|
+
if (result.isOk()) {
|
|
57
|
+
expect(result.value.name).toBe('Test');
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
it('should return error for invalid input', async () => {
|
|
62
|
+
// Arrange
|
|
63
|
+
const input = { name: '', value: -1 };
|
|
64
|
+
|
|
65
|
+
// Act
|
|
66
|
+
const result = await service.create(input);
|
|
67
|
+
|
|
68
|
+
// Assert
|
|
69
|
+
expect(result.isErr()).toBe(true);
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Integration Test Template
|
|
76
|
+
|
|
77
|
+
```typescript
|
|
78
|
+
/**
|
|
79
|
+
* @requirement REQ-XXX-NNN
|
|
80
|
+
* @design DES-XXX-NNN
|
|
81
|
+
*/
|
|
82
|
+
import { describe, it, expect, beforeAll, afterAll } from 'vitest';
|
|
83
|
+
|
|
84
|
+
describe('XxxService Integration', () => {
|
|
85
|
+
beforeAll(async () => {
|
|
86
|
+
// Setup test environment
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
afterAll(async () => {
|
|
90
|
+
// Cleanup
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
it('should complete full workflow', async () => {
|
|
94
|
+
// Test full user journey
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Best Practices for Testing
|
|
100
|
+
|
|
101
|
+
### BP-TEST-001: Test Counter Reset
|
|
102
|
+
|
|
103
|
+
```typescript
|
|
104
|
+
beforeEach(() => {
|
|
105
|
+
resetPetCounter(); // Reset ID counters
|
|
106
|
+
resetReservationCounter();
|
|
107
|
+
});
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### BP-TEST-002: Verify API Before Test
|
|
111
|
+
|
|
112
|
+
```typescript
|
|
113
|
+
// ✅ Check actual API signature first
|
|
114
|
+
const service = new PetService(repository);
|
|
115
|
+
// Verify method exists and parameters match
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### BP-TEST-004: Result Type Test Pattern
|
|
119
|
+
|
|
120
|
+
```typescript
|
|
121
|
+
// ✅ Test both success and failure cases
|
|
122
|
+
it('should handle success', async () => {
|
|
123
|
+
const result = await service.create(validInput);
|
|
124
|
+
expect(result.isOk()).toBe(true);
|
|
125
|
+
if (result.isOk()) {
|
|
126
|
+
expect(result.value.id).toBeDefined();
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
it('should handle failure', async () => {
|
|
131
|
+
const result = await service.create(invalidInput);
|
|
132
|
+
expect(result.isErr()).toBe(true);
|
|
133
|
+
if (result.isErr()) {
|
|
134
|
+
expect(result.error.message).toContain('validation');
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### BP-TEST-005: Status Transition Testing
|
|
140
|
+
|
|
141
|
+
```typescript
|
|
142
|
+
describe('status transitions', () => {
|
|
143
|
+
// Valid transitions
|
|
144
|
+
it('should allow draft -> active', () => {
|
|
145
|
+
const result = workflow.transition('draft', 'activate');
|
|
146
|
+
expect(result).toBe('active');
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
// Invalid transitions
|
|
150
|
+
it('should reject completed -> draft', () => {
|
|
151
|
+
expect(() => workflow.transition('completed', 'revert'))
|
|
152
|
+
.toThrow('Invalid transition');
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## Test Categories
|
|
158
|
+
|
|
159
|
+
| Category | Purpose | Location |
|
|
160
|
+
|----------|---------|----------|
|
|
161
|
+
| Unit | Single component | `__tests__/unit/` |
|
|
162
|
+
| Integration | Multiple components | `__tests__/integration/` |
|
|
163
|
+
| E2E | Full user flows | `__tests__/e2e/` |
|
|
164
|
+
|
|
165
|
+
## CLI Commands
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
# Generate tests from design
|
|
169
|
+
npx musubix test generate storage/design/DES-XXX.md
|
|
170
|
+
|
|
171
|
+
# Run all tests
|
|
172
|
+
npm test
|
|
173
|
+
|
|
174
|
+
# Coverage report
|
|
175
|
+
npx musubix test coverage src/
|
|
176
|
+
|
|
177
|
+
# Run specific test file
|
|
178
|
+
npm test -- xxx.test.ts
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
## Vitest Configuration
|
|
182
|
+
|
|
183
|
+
```typescript
|
|
184
|
+
// vitest.config.ts
|
|
185
|
+
import { defineConfig } from 'vitest/config';
|
|
186
|
+
|
|
187
|
+
export default defineConfig({
|
|
188
|
+
test: {
|
|
189
|
+
globals: true,
|
|
190
|
+
environment: 'node',
|
|
191
|
+
include: ['**/*.test.ts'],
|
|
192
|
+
coverage: {
|
|
193
|
+
provider: 'v8',
|
|
194
|
+
reporter: ['text', 'json', 'html'],
|
|
195
|
+
},
|
|
196
|
+
},
|
|
197
|
+
});
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
## Coverage Targets
|
|
201
|
+
|
|
202
|
+
| Metric | Target |
|
|
203
|
+
|--------|--------|
|
|
204
|
+
| Line Coverage | ≥80% |
|
|
205
|
+
| Branch Coverage | ≥75% |
|
|
206
|
+
| Function Coverage | ≥90% |
|
|
207
|
+
|
|
208
|
+
## Related Skills
|
|
209
|
+
|
|
210
|
+
- `musubix-sdd-workflow` - Full SDD workflow with TDD
|
|
211
|
+
- `musubix-code-generation` - Generate code to test
|
|
212
|
+
- `musubix-traceability` - Link tests to requirements
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: musubix-traceability
|
|
3
|
+
description: Guide for managing traceability between requirements, designs, code, and tests. Use this when asked to verify traceability, create traceability matrices, or perform impact analysis.
|
|
4
|
+
license: MIT
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# MUSUBIX Traceability Skill
|
|
8
|
+
|
|
9
|
+
This skill guides you through maintaining full traceability across the development lifecycle.
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
|
|
13
|
+
MUSUBIX enforces **Article V - Traceability**: Complete bidirectional tracing between:
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
Requirements (REQ-*) ↔ Design (DES-*) ↔ Tasks (TSK-*) ↔ Code ↔ Tests
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Traceability Matrix
|
|
20
|
+
|
|
21
|
+
### Creating a Traceability Matrix
|
|
22
|
+
|
|
23
|
+
```markdown
|
|
24
|
+
# Traceability Matrix
|
|
25
|
+
|
|
26
|
+
| 要件ID | 設計ID | タスクID | コード | テスト |
|
|
27
|
+
|--------|--------|---------|--------|--------|
|
|
28
|
+
| REQ-AUTH-001 | DES-AUTH-001 | TSK-001 | src/auth/auth-service.ts | auth.test.ts |
|
|
29
|
+
| REQ-AUTH-002 | DES-AUTH-001 | TSK-002 | src/auth/token-manager.ts | token.test.ts |
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### CLI Commands
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
# Generate traceability matrix
|
|
36
|
+
npx musubix trace matrix
|
|
37
|
+
|
|
38
|
+
# Impact analysis for a specific requirement
|
|
39
|
+
npx musubix trace impact REQ-AUTH-001
|
|
40
|
+
|
|
41
|
+
# Validate all traceability links
|
|
42
|
+
npx musubix trace validate
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Traceability in Code
|
|
46
|
+
|
|
47
|
+
### Adding Traceability Comments
|
|
48
|
+
|
|
49
|
+
```typescript
|
|
50
|
+
/**
|
|
51
|
+
* AuthService - 認証サービス
|
|
52
|
+
* @requirement REQ-AUTH-001
|
|
53
|
+
* @design DES-AUTH-001
|
|
54
|
+
* @task TSK-001
|
|
55
|
+
*/
|
|
56
|
+
export class AuthService {
|
|
57
|
+
/**
|
|
58
|
+
* ユーザー認証
|
|
59
|
+
* @requirement REQ-AUTH-001
|
|
60
|
+
*/
|
|
61
|
+
async authenticate(credentials: Credentials): Promise<Result<Token, AuthError>> {
|
|
62
|
+
// Implementation
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Test Traceability
|
|
68
|
+
|
|
69
|
+
```typescript
|
|
70
|
+
/**
|
|
71
|
+
* @requirement REQ-AUTH-001
|
|
72
|
+
* @design DES-AUTH-001
|
|
73
|
+
*/
|
|
74
|
+
describe('AuthService', () => {
|
|
75
|
+
describe('authenticate', () => {
|
|
76
|
+
it('should return token for valid credentials', async () => {
|
|
77
|
+
// Test implementation
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Impact Analysis
|
|
84
|
+
|
|
85
|
+
When a requirement changes, identify all affected artifacts:
|
|
86
|
+
|
|
87
|
+
```mermaid
|
|
88
|
+
flowchart LR
|
|
89
|
+
REQ[REQ-AUTH-001<br/>変更] --> DES[DES-AUTH-001<br/>設計]
|
|
90
|
+
DES --> TSK1[TSK-001<br/>タスク]
|
|
91
|
+
DES --> TSK2[TSK-002<br/>タスク]
|
|
92
|
+
TSK1 --> CODE1[auth-service.ts]
|
|
93
|
+
TSK2 --> CODE2[token-manager.ts]
|
|
94
|
+
CODE1 --> TEST1[auth.test.ts]
|
|
95
|
+
CODE2 --> TEST2[token.test.ts]
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Impact Analysis Steps
|
|
99
|
+
|
|
100
|
+
1. Identify changed requirement (REQ-*)
|
|
101
|
+
2. Find linked designs (DES-*)
|
|
102
|
+
3. Find linked tasks (TSK-*)
|
|
103
|
+
4. Locate affected code files
|
|
104
|
+
5. Identify tests to update
|
|
105
|
+
6. Update all artifacts
|
|
106
|
+
|
|
107
|
+
## Traceability Storage
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
storage/traceability/
|
|
111
|
+
├── matrix.json # Full traceability matrix
|
|
112
|
+
├── requirements-map.json # REQ -> DES mappings
|
|
113
|
+
├── design-map.json # DES -> TSK mappings
|
|
114
|
+
└── code-map.json # TSK -> Code mappings
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Verification Checklist
|
|
118
|
+
|
|
119
|
+
Before completing any feature:
|
|
120
|
+
|
|
121
|
+
- [ ] All requirements have linked designs
|
|
122
|
+
- [ ] All designs have linked tasks
|
|
123
|
+
- [ ] All tasks have linked code
|
|
124
|
+
- [ ] All code has linked tests
|
|
125
|
+
- [ ] Traceability comments in code
|
|
126
|
+
- [ ] Matrix updated
|
|
127
|
+
|
|
128
|
+
## MCP Tool
|
|
129
|
+
|
|
130
|
+
Use MCP tool for automated validation:
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
Tool: sdd_validate_traceability
|
|
134
|
+
Description: Validates bidirectional traceability across all artifacts
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## Related Skills
|
|
138
|
+
|
|
139
|
+
- `musubix-sdd-workflow` - Full SDD workflow
|
|
140
|
+
- `musubix-ears-validation` - Requirements validation
|
|
141
|
+
- `musubix-test-generation` - Generate tests with traceability
|