specweave 0.7.0 → 0.8.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.
Files changed (133) hide show
  1. package/CLAUDE.md +307 -11
  2. package/README.md +41 -3
  3. package/dist/cli/commands/import-docs.d.ts +21 -0
  4. package/dist/cli/commands/import-docs.d.ts.map +1 -0
  5. package/dist/cli/commands/import-docs.js +146 -0
  6. package/dist/cli/commands/import-docs.js.map +1 -0
  7. package/dist/cli/commands/init-multiproject.d.ts +11 -0
  8. package/dist/cli/commands/init-multiproject.d.ts.map +1 -0
  9. package/dist/cli/commands/init-multiproject.js +202 -0
  10. package/dist/cli/commands/init-multiproject.js.map +1 -0
  11. package/dist/cli/commands/init.d.ts.map +1 -1
  12. package/dist/cli/commands/init.js +7 -3
  13. package/dist/cli/commands/init.js.map +1 -1
  14. package/dist/cli/commands/migrate-to-multiproject.d.ts +37 -0
  15. package/dist/cli/commands/migrate-to-multiproject.d.ts.map +1 -0
  16. package/dist/cli/commands/migrate-to-multiproject.js +189 -0
  17. package/dist/cli/commands/migrate-to-multiproject.js.map +1 -0
  18. package/dist/cli/commands/migrate-to-profiles.d.ts +25 -0
  19. package/dist/cli/commands/migrate-to-profiles.d.ts.map +1 -0
  20. package/dist/cli/commands/migrate-to-profiles.js +350 -0
  21. package/dist/cli/commands/migrate-to-profiles.js.map +1 -0
  22. package/dist/cli/commands/switch-project.d.ts +13 -0
  23. package/dist/cli/commands/switch-project.d.ts.map +1 -0
  24. package/dist/cli/commands/switch-project.js +91 -0
  25. package/dist/cli/commands/switch-project.js.map +1 -0
  26. package/dist/cli/helpers/issue-tracker/index.js +4 -4
  27. package/dist/cli/helpers/issue-tracker/index.js.map +1 -1
  28. package/dist/cli/helpers/issue-tracker/utils.d.ts +6 -3
  29. package/dist/cli/helpers/issue-tracker/utils.d.ts.map +1 -1
  30. package/dist/cli/helpers/issue-tracker/utils.js +9 -7
  31. package/dist/cli/helpers/issue-tracker/utils.js.map +1 -1
  32. package/dist/core/brownfield/analyzer.d.ts +86 -0
  33. package/dist/core/brownfield/analyzer.d.ts.map +1 -0
  34. package/dist/core/brownfield/analyzer.js +365 -0
  35. package/dist/core/brownfield/analyzer.js.map +1 -0
  36. package/dist/core/brownfield/importer.d.ts +76 -0
  37. package/dist/core/brownfield/importer.d.ts.map +1 -0
  38. package/dist/core/brownfield/importer.js +287 -0
  39. package/dist/core/brownfield/importer.js.map +1 -0
  40. package/dist/core/config-manager.d.ts +47 -0
  41. package/dist/core/config-manager.d.ts.map +1 -0
  42. package/dist/core/config-manager.js +136 -0
  43. package/dist/core/config-manager.js.map +1 -0
  44. package/dist/core/project-manager.d.ts +127 -0
  45. package/dist/core/project-manager.d.ts.map +1 -0
  46. package/dist/core/project-manager.js +524 -0
  47. package/dist/core/project-manager.js.map +1 -0
  48. package/dist/core/sync/profile-manager.d.ts +72 -0
  49. package/dist/core/sync/profile-manager.d.ts.map +1 -0
  50. package/dist/core/sync/profile-manager.js +338 -0
  51. package/dist/core/sync/profile-manager.js.map +1 -0
  52. package/dist/core/sync/profile-selector.d.ts +52 -0
  53. package/dist/core/sync/profile-selector.d.ts.map +1 -0
  54. package/dist/core/sync/profile-selector.js +179 -0
  55. package/dist/core/sync/profile-selector.js.map +1 -0
  56. package/dist/core/sync/project-context.d.ts +81 -0
  57. package/dist/core/sync/project-context.d.ts.map +1 -0
  58. package/dist/core/sync/project-context.js +354 -0
  59. package/dist/core/sync/project-context.js.map +1 -0
  60. package/dist/core/sync/rate-limiter.d.ts +116 -0
  61. package/dist/core/sync/rate-limiter.d.ts.map +1 -0
  62. package/dist/core/sync/rate-limiter.js +308 -0
  63. package/dist/core/sync/rate-limiter.js.map +1 -0
  64. package/dist/core/sync/time-range-selector.d.ts +48 -0
  65. package/dist/core/sync/time-range-selector.d.ts.map +1 -0
  66. package/dist/core/sync/time-range-selector.js +224 -0
  67. package/dist/core/sync/time-range-selector.js.map +1 -0
  68. package/dist/core/types/config.d.ts +4 -0
  69. package/dist/core/types/config.d.ts.map +1 -1
  70. package/dist/core/types/config.js.map +1 -1
  71. package/dist/core/types/sync-profile.d.ts +205 -0
  72. package/dist/core/types/sync-profile.d.ts.map +1 -0
  73. package/dist/core/types/sync-profile.js +8 -0
  74. package/dist/core/types/sync-profile.js.map +1 -0
  75. package/dist/utils/project-detection.d.ts +141 -0
  76. package/dist/utils/project-detection.d.ts.map +1 -0
  77. package/dist/utils/project-detection.js +321 -0
  78. package/dist/utils/project-detection.js.map +1 -0
  79. package/package.json +2 -1
  80. package/plugins/specweave/agents/pm/AGENT.md +7 -4
  81. package/plugins/specweave/commands/specweave-abandon.md +17 -17
  82. package/plugins/specweave/commands/specweave-check-tests.md +14 -14
  83. package/plugins/specweave/commands/specweave-costs.md +1 -1
  84. package/plugins/specweave/commands/specweave-do.md +12 -12
  85. package/plugins/specweave/commands/specweave-done.md +28 -15
  86. package/plugins/specweave/commands/specweave-import-docs.md +212 -0
  87. package/plugins/specweave/commands/specweave-increment.md +10 -10
  88. package/plugins/specweave/commands/specweave-init-multiproject.md +146 -0
  89. package/plugins/specweave/commands/specweave-next.md +16 -16
  90. package/plugins/specweave/commands/specweave-pause.md +17 -17
  91. package/plugins/specweave/commands/specweave-progress.md +10 -10
  92. package/plugins/specweave/commands/specweave-qa.md +11 -11
  93. package/plugins/specweave/commands/specweave-resume.md +22 -22
  94. package/plugins/specweave/commands/specweave-status.md +18 -18
  95. package/plugins/specweave/commands/specweave-switch-project.md +168 -0
  96. package/plugins/specweave/commands/specweave-sync-docs.md +1 -1
  97. package/plugins/specweave/commands/specweave-sync-tasks.md +9 -9
  98. package/plugins/specweave/commands/specweave-tdd-cycle.md +7 -0
  99. package/plugins/specweave/commands/specweave-tdd-green.md +7 -0
  100. package/plugins/specweave/commands/specweave-tdd-red.md +7 -0
  101. package/plugins/specweave/commands/specweave-tdd-refactor.md +7 -0
  102. package/plugins/specweave/commands/specweave-translate.md +1 -1
  103. package/plugins/specweave/commands/specweave-update-scope.md +8 -8
  104. package/plugins/specweave/commands/specweave-validate.md +18 -20
  105. package/plugins/specweave/commands/specweave.md +5 -5
  106. package/plugins/specweave/skills/SKILLS-INDEX.md +1 -1
  107. package/plugins/specweave/skills/increment-planner/SKILL.md +40 -4
  108. package/plugins/specweave/skills/increment-quality-judge/SKILL.md +5 -5
  109. package/plugins/specweave/skills/increment-quality-judge-v2/SKILL.md +5 -5
  110. package/plugins/specweave/skills/specweave-detector/SKILL.md +3 -3
  111. package/plugins/specweave-ado/commands/{close-workitem.md → specweave-ado-close-workitem.md} +1 -1
  112. package/plugins/specweave-ado/commands/{create-workitem.md → specweave-ado-create-workitem.md} +1 -1
  113. package/plugins/specweave-ado/commands/{status.md → specweave-ado-status.md} +1 -1
  114. package/plugins/specweave-ado/commands/{sync.md → specweave-ado-sync.md} +1 -1
  115. package/plugins/specweave-ado/lib/ado-client-v2.ts +547 -0
  116. package/plugins/specweave-github/commands/{close-issue.md → specweave-github-close-issue.md} +1 -1
  117. package/plugins/specweave-github/commands/{create-issue.md → specweave-github-create-issue.md} +1 -1
  118. package/plugins/specweave-github/commands/{status.md → specweave-github-status.md} +1 -1
  119. package/plugins/specweave-github/commands/{sync-tasks.md → specweave-github-sync-tasks.md} +1 -1
  120. package/plugins/specweave-github/commands/specweave-github-sync.md +568 -0
  121. package/plugins/specweave-github/lib/github-client-v2.ts +555 -0
  122. package/plugins/specweave-infrastructure/commands/{monitor-setup.md → specweave-infrastructure-monitor-setup.md} +1 -1
  123. package/plugins/specweave-infrastructure/commands/{slo-implement.md → specweave-infrastructure-slo-implement.md} +1 -1
  124. package/plugins/specweave-jira/commands/{sync.md → specweave-jira-sync.md} +1 -1
  125. package/plugins/specweave-jira/lib/jira-client-v2.ts +529 -0
  126. package/plugins/specweave-ml/commands/{ml-deploy.md → specweave-ml-deploy.md} +1 -1
  127. package/plugins/specweave-ml/commands/{ml-evaluate.md → specweave-ml-evaluate.md} +1 -1
  128. package/plugins/specweave-ml/commands/{ml-explain.md → specweave-ml-explain.md} +1 -1
  129. package/plugins/specweave-ml/commands/{ml-pipeline.md → specweave-ml-pipeline.md} +1 -1
  130. package/src/templates/AGENTS.md.template +1 -0
  131. package/src/templates/CLAUDE.md.template +1 -0
  132. package/plugins/specweave-github/commands/sync.md +0 -443
  133. /package/plugins/specweave/{commands/README.md → COMMANDS.md} +0 -0
package/CLAUDE.md CHANGED
@@ -1282,8 +1282,8 @@ specweave/
1282
1282
  │ ā”œā”€ā”€ docs/
1283
1283
  │ │ ā”œā”€ā”€ internal/ # Strategic docs (NEVER published) - 6 core folders
1284
1284
  │ │ │ ā”œā”€ā”€ strategy/ # Business rationale, vision, PRDs, OKRs
1285
- │ │ │ ā”œā”€ā”€ rfc/ # Feature specifications (detailed requirements, project history)
1286
- │ │ │ │ └── rfc-####-{name}.md # User stories, AC, implementation plans
1285
+ │ │ │ ā”œā”€ā”€ specs/ # Feature specifications (detailed requirements, project history)
1286
+ │ │ │ │ └── spec-###-{name}.md # User stories, AC, implementation plans
1287
1287
  │ │ │ ā”œā”€ā”€ architecture/ # Technical design (HLD, LLD, ADR, diagrams)
1288
1288
  │ │ │ │ ā”œā”€ā”€ adr/ # Architecture Decision Records (why we chose X over Y)
1289
1289
  │ │ │ │ └── diagrams/ # Mermaid + SVG (C4 model diagrams)
@@ -1366,22 +1366,80 @@ specweave/
1366
1366
 
1367
1367
  ## Internal Documentation Structure
1368
1368
 
1369
- **Location**: `.specweave/docs/internal/` - Six core folders for engineering playbook
1369
+ **Location**: `.specweave/docs/internal/` - Cross-project folders + multi-project organization
1370
1370
 
1371
- **Quick Reference**:
1371
+ ### Cross-Project Documentation (Top-Level)
1372
+
1373
+ **Five cross-project folders** apply to the entire system:
1372
1374
 
1373
1375
  | Folder | Purpose | Use When | Examples |
1374
1376
  |--------|---------|----------|----------|
1375
1377
  | **strategy/** | Business rationale (Why?) | Defining business case for features | `prd-user-auth.md` |
1376
- | **specs/** | Feature specifications (What?) | Detailed requirements with user stories | `spec-0007-smart-discipline.md` |
1377
- | **architecture/** | Technical design (How?) | System architecture, decisions | `hld-system.md`, `adr/0001-postgres.md` |
1378
+ | **architecture/** | System-wide technical design | Architecture affecting all projects | `hld-system.md`, `adr/0001-postgres.md` |
1378
1379
  | **delivery/** | Build & release (How we build) | Git workflow, DORA metrics, CI/CD | `branch-strategy.md`, `dora-metrics.md` |
1379
1380
  | **operations/** | Production ops (How we run) | Runbooks, incidents, performance | `runbook-api.md`, `performance-tuning.md` |
1380
1381
  | **governance/** | Policies (Guardrails) | Security, compliance, coding standards | `security-policy.md`, `coding-standards.md` |
1381
1382
 
1383
+ ### Multi-Project Organization (v0.8.0+)
1384
+
1385
+ **NEW**: Projects folder for multi-team/multi-repo organizations
1386
+
1387
+ ```
1388
+ .specweave/docs/internal/
1389
+ ā”œā”€ā”€ strategy/ # Cross-project
1390
+ ā”œā”€ā”€ architecture/ # System-wide ADRs
1391
+ ā”œā”€ā”€ delivery/ # Cross-project
1392
+ ā”œā”€ā”€ operations/ # Cross-project
1393
+ ā”œā”€ā”€ governance/ # Cross-project
1394
+ │
1395
+ └── projects/ # šŸ†• Multi-project support
1396
+ ā”œā”€ā”€ default/ # Default project (single-project mode)
1397
+ │ ā”œā”€ā”€ specs/ # Living docs specs (feature-level)
1398
+ │ ā”œā”€ā”€ modules/ # Module/component documentation
1399
+ │ ā”œā”€ā”€ team/ # Team playbooks (conventions, workflows)
1400
+ │ ā”œā”€ā”€ architecture/ # Project-specific ADRs
1401
+ │ └── legacy/ # Brownfield imports
1402
+ │
1403
+ ā”œā”€ā”€ web-app/ # Additional projects
1404
+ ā”œā”€ā”€ mobile-app/
1405
+ └── platform-infra/
1406
+ ```
1407
+
1408
+ **Five Documentation Types Per Project**:
1409
+
1410
+ 1. **specs/** - Living documentation specs (user stories, acceptance criteria)
1411
+ - Permanent, feature-level knowledge base
1412
+ - ALL user stories for a feature area
1413
+ - 3-digit numbers: `spec-001-user-auth.md`
1414
+
1415
+ 2. **modules/** - Module/component documentation
1416
+ - Architecture, API contracts, integration guides
1417
+ - Created when module >1000 lines or has security implications
1418
+ - Example: `auth-module.md`, `payment-module.md`
1419
+
1420
+ 3. **team/** - Team playbooks
1421
+ - Onboarding, conventions, workflows, contacts
1422
+ - Team-specific processes and practices
1423
+ - Example: `onboarding.md`, `conventions.md`, `workflows.md`
1424
+
1425
+ 4. **architecture/** - Project-specific ADRs (optional)
1426
+ - Decisions affecting only this project
1427
+ - Use top-level `architecture/` for system-wide decisions
1428
+ - Example: `adr/0001-use-postgres.md`
1429
+
1430
+ 5. **legacy/** - Brownfield imports (temporary)
1431
+ - Imported from Notion, Confluence, Wiki
1432
+ - Migration report + classified files
1433
+ - Clean up after migration complete
1434
+
1435
+ **Key Architecture Principle**: Single project = multi-project with 1 project called "default" (NO special cases!)
1436
+
1382
1437
  **Document Flow**: `PRD → Spec → Architecture → Delivery → Operations`
1383
1438
 
1384
- **See**: [Internal Docs README](.specweave/docs/internal/README.md) for complete guidance
1439
+ **See**:
1440
+ - [Internal Docs README](.specweave/docs/internal/README.md) for complete guidance
1441
+ - [Multi-Project Setup Guide](.specweave/docs/public/guides/multi-project-setup.md) for usage
1442
+ - [ADR-0017](/.specweave/docs/internal/architecture/adr/0017-multi-project-internal-structure.md) for architecture decisions
1385
1443
 
1386
1444
  ---
1387
1445
 
@@ -1391,7 +1449,7 @@ specweave/
1391
1449
 
1392
1450
  ### The Core Question: Why Two Locations?
1393
1451
 
1394
- 1. **Living Docs Specs**: `.specweave/docs/internal/specs/spec-NNN-feature-area.md` - **Permanent, feature-level knowledge base**
1452
+ 1. **Living Docs Specs**: `.specweave/docs/internal/projects/{project-id}/specs/spec-NNN-feature-area.md` - **Permanent, feature-level knowledge base**
1395
1453
  2. **Increment Specs**: `.specweave/increments/####-name/spec.md` - **Temporary, focused implementation snapshot**
1396
1454
 
1397
1455
  **Key Difference**: Specs use **3-digit numbers** (001, 002, 003) for **feature areas**, increments use **4-digit numbers** (0001, 0002, 0003) for **implementations**.
@@ -1400,7 +1458,7 @@ specweave/
1400
1458
 
1401
1459
  **Living Docs Specs = Permanent, Feature-Level Knowledge Base**
1402
1460
 
1403
- - **Location**: `.specweave/docs/internal/specs/spec-001-core-framework-architecture.md`
1461
+ - **Location**: `.specweave/docs/internal/projects/default/specs/spec-001-core-framework-architecture.md` (single project) or `.specweave/docs/internal/projects/web-app/specs/spec-001-user-auth.md` (multi-project)
1404
1462
  - **Purpose**: COMPLETE, PERMANENT source of truth for entire feature area
1405
1463
  - **Lifecycle**: Created once, updated over time, NEVER deleted
1406
1464
  - **Scope**: Comprehensive feature area (e.g., "Core Framework", 10-50 user stories)
@@ -1429,7 +1487,7 @@ specweave/
1429
1487
 
1430
1488
  **Living Docs Spec** (Permanent, Feature-Level):
1431
1489
  ```
1432
- File: .specweave/docs/internal/specs/spec-001-core-framework-architecture.md
1490
+ File: .specweave/docs/internal/projects/default/specs/spec-001-core-framework-architecture.md
1433
1491
 
1434
1492
  # SPEC-001: Core Framework & Architecture
1435
1493
  Foundation framework with CLI, plugin system, cross-platform support
@@ -1457,7 +1515,7 @@ File: .specweave/increments/0001-core-framework/spec.md
1457
1515
 
1458
1516
  # Increment 0001: Core Framework MVP
1459
1517
  **Implements**: SPEC-001-core-framework-architecture (US-001 to US-002 only)
1460
- **Complete Specification**: See ../../docs/internal/specs/spec-001-core-framework-architecture.md
1518
+ **Complete Specification**: See ../../docs/internal/projects/default/specs/spec-001-core-framework-architecture.md
1461
1519
 
1462
1520
  ## What We're Implementing (This Increment Only)
1463
1521
  - US-001: NPM installation + CLI basics āœ…
@@ -2062,6 +2120,244 @@ vim .claude-plugin/marketplace.json
2062
2120
 
2063
2121
  ---
2064
2122
 
2123
+ ## Multi-Project Sync Architecture
2124
+
2125
+ **SpecWeave supports syncing increments to unlimited external repositories** (GitHub, JIRA, Azure DevOps) with intelligent rate limiting and time range filtering.
2126
+
2127
+ ### Core Concepts
2128
+
2129
+ **3-Layer Architecture**:
2130
+
2131
+ ```
2132
+ Layer 1: Credentials (.env)
2133
+ ā”œā”€ā”€ GITHUB_TOKEN=...
2134
+ ā”œā”€ā”€ JIRA_API_TOKEN=...
2135
+ └── AZURE_DEVOPS_PAT=...
2136
+
2137
+ Layer 2: Sync Profiles (config.json)
2138
+ ā”œā”€ā”€ specweave-dev (GitHub: anton-abyzov/specweave)
2139
+ ā”œā”€ā”€ client-mobile (GitHub: client-org/mobile-app)
2140
+ ā”œā”€ā”€ internal-jira (JIRA: company.atlassian.net/PROJ)
2141
+ └── ado-backend (ADO: myorg/backend-services)
2142
+
2143
+ Layer 3: Per-Increment Metadata (metadata.json)
2144
+ └── 0004-plugin-architecture
2145
+ ā”œā”€ā”€ profile: specweave-dev
2146
+ ā”œā”€ā”€ issueNumber: 130
2147
+ └── timeRange: 1M
2148
+ ```
2149
+
2150
+ ### Sync Profiles
2151
+
2152
+ **Profiles** define how to connect to external systems:
2153
+
2154
+ ```json
2155
+ {
2156
+ "sync": {
2157
+ "profiles": {
2158
+ "specweave-dev": {
2159
+ "provider": "github",
2160
+ "displayName": "SpecWeave Development",
2161
+ "config": {
2162
+ "owner": "anton-abyzov",
2163
+ "repo": "specweave"
2164
+ },
2165
+ "timeRange": {
2166
+ "default": "1M",
2167
+ "max": "6M"
2168
+ },
2169
+ "rateLimits": {
2170
+ "maxItemsPerSync": 500,
2171
+ "warnThreshold": 100
2172
+ }
2173
+ }
2174
+ }
2175
+ }
2176
+ }
2177
+ ```
2178
+
2179
+ **Benefits**:
2180
+ - āœ… Unlimited profiles per provider (3+, 5+, 10+ repos)
2181
+ - āœ… Different increments sync to different repos
2182
+ - āœ… Team-based organization (Frontend → repo-A, Backend → repo-B)
2183
+ - āœ… Multi-client support (Client-A, Client-B, Client-C)
2184
+
2185
+ ### Project Contexts
2186
+
2187
+ **Projects** organize work into logical groups:
2188
+
2189
+ ```json
2190
+ {
2191
+ "sync": {
2192
+ "projects": {
2193
+ "specweave-core": {
2194
+ "id": "specweave-core",
2195
+ "name": "SpecWeave Core",
2196
+ "description": "Core framework development",
2197
+ "keywords": ["framework", "cli", "plugin"],
2198
+ "team": "Core Team",
2199
+ "defaultSyncProfile": "specweave-dev",
2200
+ "specsFolder": ".specweave/docs/internal/specs/specweave-core",
2201
+ "increments": ["0001-core-framework", "0002-core-enhancements"]
2202
+ }
2203
+ }
2204
+ }
2205
+ }
2206
+ ```
2207
+
2208
+ **Smart Project Detection**:
2209
+ - Project name match: +10 points
2210
+ - Team name match: +5 points
2211
+ - Keyword match: +3 points per keyword
2212
+ - Auto-select if confidence > 0.7
2213
+
2214
+ **Example**:
2215
+ ```
2216
+ Increment: "Add React Native dark mode for mobile app"
2217
+ → Detects project "mobile-app" (keywords: mobile, react-native)
2218
+ → Uses profile "client-mobile" automatically
2219
+ → Syncs to client-org/mobile-app repo
2220
+ ```
2221
+
2222
+ ### Time Range Filtering
2223
+
2224
+ **Problem**: Syncing ALL data takes 25+ minutes and hits rate limits.
2225
+
2226
+ **Solution**: Time range presets filter data by creation date:
2227
+
2228
+ | Preset | Duration | Items | API Calls | Duration | Impact |
2229
+ |--------|----------|-------|-----------|----------|--------|
2230
+ | **1W** | 1 week | ~50 | 75 | 30 sec | Low |
2231
+ | **1M** | 1 month | ~200 | 300 | 2 min | Medium (āœ… Recommended) |
2232
+ | **3M** | 3 months | ~600 | 900 | 5 min | Medium |
2233
+ | **6M** | 6 months | ~1,200 | 1,800 | 10 min | High |
2234
+ | **ALL** | All time | ~5,000+ | 7,500+ | 30+ min | Critical (āŒ Avoid) |
2235
+
2236
+ **Usage**:
2237
+ ```bash
2238
+ # Interactive (select time range)
2239
+ /specweave-github:sync 0004
2240
+
2241
+ # Specify time range
2242
+ /specweave-github:sync 0004 --time-range 1M
2243
+
2244
+ # Preview before executing
2245
+ /specweave-github:sync 0004 --dry-run
2246
+ ```
2247
+
2248
+ ### Rate Limiting Protection
2249
+
2250
+ **Pre-Flight Validation**:
2251
+ 1. Estimate API calls based on time range
2252
+ 2. Check current rate limit status (GitHub: 5000/hour, JIRA: 100/min, ADO: 200/5min)
2253
+ 3. Calculate impact: low (<250 calls), medium (250-1000), high (1000-2500), critical (2500+)
2254
+ 4. Warn or block if risky
2255
+
2256
+ **Example: Critical Impact Blocked**:
2257
+ ```
2258
+ āŒ This sync may FAIL due to:
2259
+
2260
+ Blockers:
2261
+ • CRITICAL rate limit impact: 7,500 API calls exceeds safe threshold
2262
+ • Not enough rate limit remaining (need 7,500, only 4,850 remaining)
2263
+
2264
+ Recommendations:
2265
+ 1. Reduce time range to 1 month (~300 API calls, SAFE)
2266
+ 2. Wait for rate limit reset (25 minutes)
2267
+ 3. Split sync across multiple time periods
2268
+ ```
2269
+
2270
+ ### File Organization
2271
+
2272
+ **Specs organized by project**:
2273
+ ```
2274
+ .specweave/docs/internal/specs/
2275
+ ā”œā”€ā”€ specweave-core/
2276
+ │ ā”œā”€ā”€ spec-001-core-framework.md
2277
+ │ └── spec-002-plugin-architecture.md
2278
+ ā”œā”€ā”€ client-mobile/
2279
+ │ ā”œā”€ā”€ spec-001-mvp.md
2280
+ │ └── spec-002-dark-mode.md
2281
+ └── internal-backend/
2282
+ └── spec-001-api-v2.md
2283
+ ```
2284
+
2285
+ ### Key Files
2286
+
2287
+ **Core Infrastructure**:
2288
+ - `src/core/types/sync-profile.ts` - Type definitions (432 lines)
2289
+ - `src/core/sync/profile-manager.ts` - CRUD for profiles (463 lines)
2290
+ - `src/core/sync/rate-limiter.ts` - Rate limiting logic (365 lines)
2291
+ - `src/core/sync/project-context.ts` - Project management (379 lines)
2292
+
2293
+ **Client Libraries** (Profile-Based):
2294
+ - `plugins/specweave-github/lib/github-client-v2.ts` - GitHub sync (466 lines)
2295
+ - `plugins/specweave-jira/lib/jira-client-v2.ts` - JIRA sync (520 lines)
2296
+ - `plugins/specweave-ado/lib/ado-client-v2.ts` - ADO sync (485 lines)
2297
+
2298
+ **UX Components**:
2299
+ - `src/core/sync/time-range-selector.ts` - Interactive time range selection (295 lines)
2300
+ - `src/core/sync/profile-selector.ts` - Interactive profile selection (230 lines)
2301
+
2302
+ **Migration**:
2303
+ - `src/cli/commands/migrate-to-profiles.ts` - Automatic migration from V1 (425 lines)
2304
+
2305
+ ### Common Commands
2306
+
2307
+ ```bash
2308
+ # Profile management
2309
+ /specweave:sync-profile create
2310
+ /specweave:sync-profile list
2311
+ /specweave:sync-profile get <id>
2312
+ /specweave:sync-profile update <id>
2313
+ /specweave:sync-profile delete <id>
2314
+
2315
+ # Project management
2316
+ /specweave:project create
2317
+ /specweave:project list
2318
+ /specweave:project link <project-id> <increment-id>
2319
+ /specweave:project stats
2320
+
2321
+ # Syncing (GitHub example)
2322
+ /specweave-github:sync <increment-id>
2323
+ /specweave-github:sync <increment-id> --profile <id>
2324
+ /specweave-github:sync <increment-id> --time-range 1M
2325
+ /specweave-github:sync <increment-id> --dry-run
2326
+
2327
+ # Migration from V1
2328
+ specweave migrate-to-profiles
2329
+ ```
2330
+
2331
+ ### Migration from V1 (Single Project)
2332
+
2333
+ **Automatic**:
2334
+ ```bash
2335
+ specweave migrate-to-profiles
2336
+ ```
2337
+
2338
+ **Output**:
2339
+ ```
2340
+ āœ… Created GitHub profile: default-github
2341
+ Repository: anton-abyzov/specweave
2342
+
2343
+ āœ… Created default project context
2344
+ Name: specweave
2345
+ Default profile: default-github
2346
+
2347
+ šŸ“Š Migration Summary:
2348
+ Profiles created: 1
2349
+ Projects created: 1
2350
+ ```
2351
+
2352
+ ### Documentation
2353
+
2354
+ **User Guide**: `.specweave/increments/0011-multi-project-sync/reports/USER-GUIDE-MULTI-PROJECT-SYNC.md`
2355
+ **ADR**: `.specweave/docs/internal/architecture/adr/0016-multi-project-external-sync.md`
2356
+ **Implementation Summary**: `.specweave/increments/0011-multi-project-sync/COMPLETE-IMPLEMENTATION.md`
2357
+ **Command Docs**: `plugins/specweave-github/commands/specweave-github-sync.md`
2358
+
2359
+ ---
2360
+
2065
2361
  ## Key SpecWeave Principles (for Contributors)
2066
2362
 
2067
2363
  ### 1. Source of Truth Discipline
package/README.md CHANGED
@@ -156,11 +156,49 @@ Work in 9 languages (Russian, Spanish, Chinese, German, French, Japanese, Korean
156
156
 
157
157
  ---
158
158
 
159
- ## For Brownfield Projects
159
+ ## Enterprise Features
160
160
 
161
- Initialize SpecWeave in existing codebases to create retroactive specifications, architecture diagrams, and living documentation.
161
+ ### šŸ¢ Multi-Project Support (v0.8.0+)
162
162
 
163
- **[→ Brownfield Guide](https://spec-weave.com/docs/workflows/brownfield)**
163
+ Organize documentation by team, repo, or microservice:
164
+
165
+ - **Team-Based Organization**: Frontend, Backend, Mobile, Platform teams with separate documentation
166
+ - **Microservices Architecture**: Each service gets its own specs, modules, and team playbooks
167
+ - **Per-Project Sync**: Link projects to different GitHub repos, JIRA projects, or ADO boards
168
+ - **Unified Architecture**: Single project = multi-project with 1 project (NO special cases!)
169
+
170
+ **Five Documentation Types Per Project**:
171
+ 1. **specs/** - Living documentation specs (user stories, AC)
172
+ 2. **modules/** - Module/component documentation (architecture, APIs)
173
+ 3. **team/** - Team playbooks (onboarding, conventions, workflows)
174
+ 4. **architecture/** - Project-specific ADRs (optional)
175
+ 5. **legacy/** - Brownfield imports (temporary)
176
+
177
+ **[→ Multi-Project Setup Guide](https://spec-weave.com/docs/guides/multi-project-setup)**
178
+
179
+ ### šŸ“¦ Brownfield Import
180
+
181
+ Import existing documentation from external sources:
182
+
183
+ - **Automatic Classification**: AI-powered keyword detection (85%+ accuracy)
184
+ - **Supported Sources**: Notion, Confluence, GitHub Wiki, custom markdown folders
185
+ - **Smart Organization**: Classifies into specs, modules, team docs, or legacy
186
+ - **Migration Reports**: Complete audit trail with confidence scores and manual review checklist
187
+
188
+ **Example**:
189
+ ```bash
190
+ # Import Notion export to web-app project
191
+ /specweave:import-docs ~/Downloads/notion-export --source=notion --project=web-app
192
+
193
+ # Result:
194
+ # āœ… Classified 127 files
195
+ # - 37 specs → projects/web-app/specs/
196
+ # - 18 modules → projects/web-app/modules/
197
+ # - 12 team docs → projects/web-app/team/
198
+ # - 60 legacy → projects/web-app/legacy/notion/
199
+ ```
200
+
201
+ **[→ Brownfield Integration Guide](https://spec-weave.com/docs/workflows/brownfield)**
164
202
 
165
203
  ---
166
204
 
@@ -0,0 +1,21 @@
1
+ /**
2
+ * CLI Command: /specweave:import-docs
3
+ *
4
+ * Import brownfield documentation from external sources
5
+ */
6
+ export interface ImportDocsArgs {
7
+ sourcePath: string;
8
+ source?: 'notion' | 'confluence' | 'wiki' | 'custom';
9
+ project?: string;
10
+ preserveStructure?: boolean;
11
+ dryRun?: boolean;
12
+ }
13
+ export declare function importDocs(projectRoot: string, args: ImportDocsArgs): Promise<void>;
14
+ /**
15
+ * Parse command-line arguments for import-docs
16
+ *
17
+ * @param args - Raw command-line arguments
18
+ * @returns Parsed arguments
19
+ */
20
+ export declare function parseImportDocsArgs(args: string[]): ImportDocsArgs;
21
+ //# sourceMappingURL=import-docs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-docs.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/import-docs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,QAAQ,GAAG,YAAY,GAAG,MAAM,GAAG,QAAQ,CAAC;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,UAAU,CAC9B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,IAAI,CAAC,CAkHf;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,cAAc,CA6BlE"}
@@ -0,0 +1,146 @@
1
+ /**
2
+ * CLI Command: /specweave:import-docs
3
+ *
4
+ * Import brownfield documentation from external sources
5
+ */
6
+ import path from 'path';
7
+ import inquirer from 'inquirer';
8
+ import { BrownfieldImporter } from '../../core/brownfield/importer';
9
+ import { ProjectManager } from '../../core/project-manager';
10
+ export async function importDocs(projectRoot, args) {
11
+ console.log('\nšŸ“„ Import Brownfield Documentation\n');
12
+ try {
13
+ // Validate source path
14
+ if (!args.sourcePath) {
15
+ throw new Error('Source path is required. Usage: /specweave:import-docs <source-path> [options]');
16
+ }
17
+ // Resolve source path (handle relative paths)
18
+ const sourcePath = path.isAbsolute(args.sourcePath)
19
+ ? args.sourcePath
20
+ : path.resolve(process.cwd(), args.sourcePath);
21
+ // Get source type if not provided
22
+ let source = args.source;
23
+ if (!source) {
24
+ const { sourceType } = await inquirer.prompt([{
25
+ type: 'list',
26
+ name: 'sourceType',
27
+ message: 'Select source type:',
28
+ choices: [
29
+ { name: 'Notion (markdown export)', value: 'notion' },
30
+ { name: 'Confluence (HTML/markdown export)', value: 'confluence' },
31
+ { name: 'GitHub Wiki (git repository)', value: 'wiki' },
32
+ { name: 'Custom (any markdown folder)', value: 'custom' }
33
+ ]
34
+ }]);
35
+ source = sourceType;
36
+ }
37
+ // Get target project
38
+ const projectManager = new ProjectManager(projectRoot);
39
+ const allProjects = projectManager.getAllProjects();
40
+ const activeProject = projectManager.getActiveProject();
41
+ let targetProject = args.project || activeProject.id;
42
+ if (!args.project && allProjects.length > 1) {
43
+ const { projectId } = await inquirer.prompt([{
44
+ type: 'list',
45
+ name: 'projectId',
46
+ message: 'Select target project:',
47
+ choices: allProjects.map(p => ({
48
+ name: `${p.name} (${p.id})`,
49
+ value: p.id
50
+ })),
51
+ default: activeProject.id
52
+ }]);
53
+ targetProject = projectId;
54
+ }
55
+ // Confirm before import (unless dry run)
56
+ if (!args.dryRun) {
57
+ console.log('\nšŸ“‹ Import Configuration:\n');
58
+ console.log(` Source: ${sourcePath}`);
59
+ console.log(` Type: ${source}`);
60
+ console.log(` Target project: ${targetProject}`);
61
+ console.log(` Preserve structure: ${args.preserveStructure ? 'Yes' : 'No'}\n`);
62
+ const { confirm } = await inquirer.prompt([{
63
+ type: 'confirm',
64
+ name: 'confirm',
65
+ message: 'Proceed with import?',
66
+ default: true
67
+ }]);
68
+ if (!confirm) {
69
+ console.log('\nāŒ Import cancelled\n');
70
+ return;
71
+ }
72
+ }
73
+ // Create importer
74
+ const importer = new BrownfieldImporter(projectRoot);
75
+ // Import options
76
+ const options = {
77
+ sourcePath,
78
+ project: targetProject,
79
+ source: source,
80
+ preserveStructure: args.preserveStructure || false,
81
+ dryRun: args.dryRun || false
82
+ };
83
+ // Import
84
+ const report = await importer.import(options);
85
+ if (args.dryRun) {
86
+ console.log('\nšŸ” Dry run complete - no files were imported');
87
+ console.log(' Remove --dry-run flag to perform actual import\n');
88
+ }
89
+ else {
90
+ // Show summary
91
+ console.log('\nšŸ“Š Import Summary:\n');
92
+ console.log(` Total files: ${report.totalFiles}`);
93
+ console.log(` - Specs: ${report.specsImported}`);
94
+ console.log(` - Modules: ${report.modulesImported}`);
95
+ console.log(` - Team docs: ${report.teamImported}`);
96
+ console.log(` - Legacy: ${report.legacyImported}\n`);
97
+ console.log('šŸ“„ Migration report created:');
98
+ console.log(` ${path.join(report.destination, '../README.md')}\n`);
99
+ console.log('āœ… Next steps:');
100
+ console.log(' 1. Review migration report for classification accuracy');
101
+ console.log(' 2. Manually move misclassified files if needed');
102
+ console.log(' 3. Update spec numbers to follow SpecWeave conventions');
103
+ console.log(' 4. Clean up legacy/ folder when migration complete\n');
104
+ }
105
+ }
106
+ catch (error) {
107
+ console.error(`\nāŒ Import failed: ${error instanceof Error ? error.message : String(error)}\n`);
108
+ throw error;
109
+ }
110
+ }
111
+ /**
112
+ * Parse command-line arguments for import-docs
113
+ *
114
+ * @param args - Raw command-line arguments
115
+ * @returns Parsed arguments
116
+ */
117
+ export function parseImportDocsArgs(args) {
118
+ const result = {
119
+ sourcePath: ''
120
+ };
121
+ // First arg is source path
122
+ if (args.length > 0) {
123
+ result.sourcePath = args[0];
124
+ }
125
+ // Parse options
126
+ for (let i = 1; i < args.length; i++) {
127
+ const arg = args[i];
128
+ if (arg.startsWith('--source=')) {
129
+ const value = arg.substring('--source='.length);
130
+ if (['notion', 'confluence', 'wiki', 'custom'].includes(value)) {
131
+ result.source = value;
132
+ }
133
+ }
134
+ else if (arg.startsWith('--project=')) {
135
+ result.project = arg.substring('--project='.length);
136
+ }
137
+ else if (arg === '--preserve-structure') {
138
+ result.preserveStructure = true;
139
+ }
140
+ else if (arg === '--dry-run') {
141
+ result.dryRun = true;
142
+ }
143
+ }
144
+ return result;
145
+ }
146
+ //# sourceMappingURL=import-docs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-docs.js","sourceRoot":"","sources":["../../../src/cli/commands/import-docs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * CLI Command: /specweave:init-multiproject
3
+ *
4
+ * Initialize multi-project mode for SpecWeave
5
+ */
6
+ export declare function initMultiProject(projectRoot: string): Promise<void>;
7
+ /**
8
+ * List all projects
9
+ */
10
+ export declare function listProjects(projectRoot: string): Promise<void>;
11
+ //# sourceMappingURL=init-multiproject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-multiproject.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init-multiproject.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoFzE;AA0GD;;GAEG;AACH,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBrE"}