vibe-fabric 0.1.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.
- package/LICENSE +21 -0
- package/README.md +171 -0
- package/dist/cli/commands/claude.d.ts +19 -0
- package/dist/cli/commands/claude.d.ts.map +1 -0
- package/dist/cli/commands/claude.js +107 -0
- package/dist/cli/commands/claude.js.map +1 -0
- package/dist/cli/commands/coverage.d.ts +37 -0
- package/dist/cli/commands/coverage.d.ts.map +1 -0
- package/dist/cli/commands/coverage.js +374 -0
- package/dist/cli/commands/coverage.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +30 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +187 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/gaps.d.ts +52 -0
- package/dist/cli/commands/gaps.d.ts.map +1 -0
- package/dist/cli/commands/gaps.js +487 -0
- package/dist/cli/commands/gaps.js.map +1 -0
- package/dist/cli/commands/help.d.ts +7 -0
- package/dist/cli/commands/help.d.ts.map +1 -0
- package/dist/cli/commands/help.js +51 -0
- package/dist/cli/commands/help.js.map +1 -0
- package/dist/cli/commands/init.d.ts +39 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +246 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/prd.d.ts +30 -0
- package/dist/cli/commands/prd.d.ts.map +1 -0
- package/dist/cli/commands/prd.js +179 -0
- package/dist/cli/commands/prd.js.map +1 -0
- package/dist/cli/commands/repo/add.d.ts +36 -0
- package/dist/cli/commands/repo/add.d.ts.map +1 -0
- package/dist/cli/commands/repo/add.js +303 -0
- package/dist/cli/commands/repo/add.js.map +1 -0
- package/dist/cli/commands/scope.d.ts +36 -0
- package/dist/cli/commands/scope.d.ts.map +1 -0
- package/dist/cli/commands/scope.js +312 -0
- package/dist/cli/commands/scope.js.map +1 -0
- package/dist/cli/commands/send.d.ts +43 -0
- package/dist/cli/commands/send.d.ts.map +1 -0
- package/dist/cli/commands/send.js +469 -0
- package/dist/cli/commands/send.js.map +1 -0
- package/dist/cli/commands/status.d.ts +32 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +422 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/sync.d.ts +37 -0
- package/dist/cli/commands/sync.d.ts.map +1 -0
- package/dist/cli/commands/sync.js +299 -0
- package/dist/cli/commands/sync.js.map +1 -0
- package/dist/cli/commands/version.d.ts +7 -0
- package/dist/cli/commands/version.d.ts.map +1 -0
- package/dist/cli/commands/version.js +45 -0
- package/dist/cli/commands/version.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +65 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/ui/components/ActiveScopes.d.ts +13 -0
- package/dist/cli/ui/components/ActiveScopes.d.ts.map +1 -0
- package/dist/cli/ui/components/ActiveScopes.js +25 -0
- package/dist/cli/ui/components/ActiveScopes.js.map +1 -0
- package/dist/cli/ui/components/EmptyState.d.ts +24 -0
- package/dist/cli/ui/components/EmptyState.d.ts.map +1 -0
- package/dist/cli/ui/components/EmptyState.js +13 -0
- package/dist/cli/ui/components/EmptyState.js.map +1 -0
- package/dist/cli/ui/components/Header.d.ts +11 -0
- package/dist/cli/ui/components/Header.d.ts.map +1 -0
- package/dist/cli/ui/components/Header.js +32 -0
- package/dist/cli/ui/components/Header.js.map +1 -0
- package/dist/cli/ui/components/PrdCoverage.d.ts +12 -0
- package/dist/cli/ui/components/PrdCoverage.d.ts.map +1 -0
- package/dist/cli/ui/components/PrdCoverage.js +15 -0
- package/dist/cli/ui/components/PrdCoverage.js.map +1 -0
- package/dist/cli/ui/components/RecentActivity.d.ts +12 -0
- package/dist/cli/ui/components/RecentActivity.d.ts.map +1 -0
- package/dist/cli/ui/components/RecentActivity.js +40 -0
- package/dist/cli/ui/components/RecentActivity.js.map +1 -0
- package/dist/cli/ui/components/RepoList.d.ts +12 -0
- package/dist/cli/ui/components/RepoList.d.ts.map +1 -0
- package/dist/cli/ui/components/RepoList.js +24 -0
- package/dist/cli/ui/components/RepoList.js.map +1 -0
- package/dist/cli/ui/components/Shortcuts.d.ts +7 -0
- package/dist/cli/ui/components/Shortcuts.d.ts.map +1 -0
- package/dist/cli/ui/components/Shortcuts.js +7 -0
- package/dist/cli/ui/components/Shortcuts.js.map +1 -0
- package/dist/cli/ui/components/index.d.ts +12 -0
- package/dist/cli/ui/components/index.d.ts.map +1 -0
- package/dist/cli/ui/components/index.js +12 -0
- package/dist/cli/ui/components/index.js.map +1 -0
- package/dist/cli/ui/dashboard.d.ts +9 -0
- package/dist/cli/ui/dashboard.d.ts.map +1 -0
- package/dist/cli/ui/dashboard.js +102 -0
- package/dist/cli/ui/dashboard.js.map +1 -0
- package/dist/core/commands.d.ts +32 -0
- package/dist/core/commands.d.ts.map +1 -0
- package/dist/core/commands.js +361 -0
- package/dist/core/commands.js.map +1 -0
- package/dist/core/config.d.ts +18 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +78 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/coverage.d.ts +32 -0
- package/dist/core/coverage.d.ts.map +1 -0
- package/dist/core/coverage.js +286 -0
- package/dist/core/coverage.js.map +1 -0
- package/dist/core/dashboard/data.d.ts +73 -0
- package/dist/core/dashboard/data.d.ts.map +1 -0
- package/dist/core/dashboard/data.js +250 -0
- package/dist/core/dashboard/data.js.map +1 -0
- package/dist/core/dependencies.d.ts +39 -0
- package/dist/core/dependencies.d.ts.map +1 -0
- package/dist/core/dependencies.js +160 -0
- package/dist/core/dependencies.js.map +1 -0
- package/dist/core/doctor/auth.d.ts +22 -0
- package/dist/core/doctor/auth.d.ts.map +1 -0
- package/dist/core/doctor/auth.js +147 -0
- package/dist/core/doctor/auth.js.map +1 -0
- package/dist/core/doctor/config.d.ts +26 -0
- package/dist/core/doctor/config.d.ts.map +1 -0
- package/dist/core/doctor/config.js +172 -0
- package/dist/core/doctor/config.js.map +1 -0
- package/dist/core/doctor/environment.d.ts +26 -0
- package/dist/core/doctor/environment.d.ts.map +1 -0
- package/dist/core/doctor/environment.js +145 -0
- package/dist/core/doctor/environment.js.map +1 -0
- package/dist/core/doctor/index.d.ts +44 -0
- package/dist/core/doctor/index.d.ts.map +1 -0
- package/dist/core/doctor/index.js +134 -0
- package/dist/core/doctor/index.js.map +1 -0
- package/dist/core/doctor/repos.d.ts +22 -0
- package/dist/core/doctor/repos.d.ts.map +1 -0
- package/dist/core/doctor/repos.js +262 -0
- package/dist/core/doctor/repos.js.map +1 -0
- package/dist/core/doctor/sync.d.ts +18 -0
- package/dist/core/doctor/sync.d.ts.map +1 -0
- package/dist/core/doctor/sync.js +146 -0
- package/dist/core/doctor/sync.js.map +1 -0
- package/dist/core/gaps.d.ts +70 -0
- package/dist/core/gaps.d.ts.map +1 -0
- package/dist/core/gaps.js +448 -0
- package/dist/core/gaps.js.map +1 -0
- package/dist/core/github.d.ts +38 -0
- package/dist/core/github.d.ts.map +1 -0
- package/dist/core/github.js +102 -0
- package/dist/core/github.js.map +1 -0
- package/dist/core/prd/analyzer.d.ts +44 -0
- package/dist/core/prd/analyzer.d.ts.map +1 -0
- package/dist/core/prd/analyzer.js +259 -0
- package/dist/core/prd/analyzer.js.map +1 -0
- package/dist/core/prd/check.d.ts +17 -0
- package/dist/core/prd/check.d.ts.map +1 -0
- package/dist/core/prd/check.js +154 -0
- package/dist/core/prd/check.js.map +1 -0
- package/dist/core/prd/index.d.ts +6 -0
- package/dist/core/prd/index.d.ts.map +1 -0
- package/dist/core/prd/index.js +6 -0
- package/dist/core/prd/index.js.map +1 -0
- package/dist/core/project.d.ts +13 -0
- package/dist/core/project.d.ts.map +1 -0
- package/dist/core/project.js +810 -0
- package/dist/core/project.js.map +1 -0
- package/dist/core/prompts.d.ts +52 -0
- package/dist/core/prompts.d.ts.map +1 -0
- package/dist/core/prompts.js +266 -0
- package/dist/core/prompts.js.map +1 -0
- package/dist/core/repo/framework.d.ts +38 -0
- package/dist/core/repo/framework.d.ts.map +1 -0
- package/dist/core/repo/framework.js +142 -0
- package/dist/core/repo/framework.js.map +1 -0
- package/dist/core/repo/index.d.ts +6 -0
- package/dist/core/repo/index.d.ts.map +1 -0
- package/dist/core/repo/index.js +6 -0
- package/dist/core/repo/index.js.map +1 -0
- package/dist/core/repo/templates/claude-agents.d.ts +6 -0
- package/dist/core/repo/templates/claude-agents.d.ts.map +1 -0
- package/dist/core/repo/templates/claude-agents.js +173 -0
- package/dist/core/repo/templates/claude-agents.js.map +1 -0
- package/dist/core/repo/templates/claude-commands.d.ts +6 -0
- package/dist/core/repo/templates/claude-commands.d.ts.map +1 -0
- package/dist/core/repo/templates/claude-commands.js +278 -0
- package/dist/core/repo/templates/claude-commands.js.map +1 -0
- package/dist/core/repo/templates/claude-prompts.d.ts +6 -0
- package/dist/core/repo/templates/claude-prompts.d.ts.map +1 -0
- package/dist/core/repo/templates/claude-prompts.js +258 -0
- package/dist/core/repo/templates/claude-prompts.js.map +1 -0
- package/dist/core/repo/templates/claude-scripts.d.ts +6 -0
- package/dist/core/repo/templates/claude-scripts.d.ts.map +1 -0
- package/dist/core/repo/templates/claude-scripts.js +212 -0
- package/dist/core/repo/templates/claude-scripts.js.map +1 -0
- package/dist/core/repo/templates/index.d.ts +22 -0
- package/dist/core/repo/templates/index.d.ts.map +1 -0
- package/dist/core/repo/templates/index.js +121 -0
- package/dist/core/repo/templates/index.js.map +1 -0
- package/dist/core/repo/templates/vibe-readme.d.ts +6 -0
- package/dist/core/repo/templates/vibe-readme.d.ts.map +1 -0
- package/dist/core/repo/templates/vibe-readme.js +204 -0
- package/dist/core/repo/templates/vibe-readme.js.map +1 -0
- package/dist/core/repo/templates/vibe-scripts.d.ts +6 -0
- package/dist/core/repo/templates/vibe-scripts.d.ts.map +1 -0
- package/dist/core/repo/templates/vibe-scripts.js +308 -0
- package/dist/core/repo/templates/vibe-scripts.js.map +1 -0
- package/dist/core/repo/validation.d.ts +46 -0
- package/dist/core/repo/validation.d.ts.map +1 -0
- package/dist/core/repo/validation.js +154 -0
- package/dist/core/repo/validation.js.map +1 -0
- package/dist/core/runner.d.ts +38 -0
- package/dist/core/runner.d.ts.map +1 -0
- package/dist/core/runner.js +124 -0
- package/dist/core/runner.js.map +1 -0
- package/dist/core/send.d.ts +83 -0
- package/dist/core/send.d.ts.map +1 -0
- package/dist/core/send.js +565 -0
- package/dist/core/send.js.map +1 -0
- package/dist/core/status.d.ts +76 -0
- package/dist/core/status.d.ts.map +1 -0
- package/dist/core/status.js +430 -0
- package/dist/core/status.js.map +1 -0
- package/dist/core/sync/aggregator.d.ts +22 -0
- package/dist/core/sync/aggregator.d.ts.map +1 -0
- package/dist/core/sync/aggregator.js +278 -0
- package/dist/core/sync/aggregator.js.map +1 -0
- package/dist/core/sync/completion.d.ts +37 -0
- package/dist/core/sync/completion.d.ts.map +1 -0
- package/dist/core/sync/completion.js +264 -0
- package/dist/core/sync/completion.js.map +1 -0
- package/dist/core/sync/index.d.ts +51 -0
- package/dist/core/sync/index.d.ts.map +1 -0
- package/dist/core/sync/index.js +200 -0
- package/dist/core/sync/index.js.map +1 -0
- package/dist/core/sync/scanner.d.ts +39 -0
- package/dist/core/sync/scanner.d.ts.map +1 -0
- package/dist/core/sync/scanner.js +364 -0
- package/dist/core/sync/scanner.js.map +1 -0
- package/dist/types/config.d.ts +157 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +58 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/coverage.d.ts +100 -0
- package/dist/types/coverage.d.ts.map +1 -0
- package/dist/types/coverage.js +8 -0
- package/dist/types/coverage.js.map +1 -0
- package/dist/types/doctor.d.ts +68 -0
- package/dist/types/doctor.d.ts.map +1 -0
- package/dist/types/doctor.js +5 -0
- package/dist/types/doctor.js.map +1 -0
- package/dist/types/gaps.d.ts +129 -0
- package/dist/types/gaps.d.ts.map +1 -0
- package/dist/types/gaps.js +8 -0
- package/dist/types/gaps.js.map +1 -0
- package/dist/types/prompts.d.ts +99 -0
- package/dist/types/prompts.d.ts.map +1 -0
- package/dist/types/prompts.js +5 -0
- package/dist/types/prompts.js.map +1 -0
- package/dist/types/runner.d.ts +156 -0
- package/dist/types/runner.d.ts.map +1 -0
- package/dist/types/runner.js +41 -0
- package/dist/types/runner.js.map +1 -0
- package/dist/types/send.d.ts +157 -0
- package/dist/types/send.d.ts.map +1 -0
- package/dist/types/send.js +18 -0
- package/dist/types/send.js.map +1 -0
- package/dist/types/status.d.ts +150 -0
- package/dist/types/status.d.ts.map +1 -0
- package/dist/types/status.js +15 -0
- package/dist/types/status.js.map +1 -0
- package/dist/types/sync.d.ts +259 -0
- package/dist/types/sync.d.ts.map +1 -0
- package/dist/types/sync.js +38 -0
- package/dist/types/sync.js.map +1 -0
- package/package.json +72 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 vibe-fabric contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# vibe-fabric
|
|
2
|
+
|
|
3
|
+
> AI-Collaborative Development Coordination Framework
|
|
4
|
+
|
|
5
|
+
A CLI tool that helps you coordinate software development across multiple repositories using AI assistance. Create a **planning hub** where you manage requirements, create work scopes, and track implementation progress.
|
|
6
|
+
|
|
7
|
+
## Features
|
|
8
|
+
|
|
9
|
+
- **Planning Hub** - Central coordination point for multi-repo projects
|
|
10
|
+
- **AI-Powered PRD Management** - Create and maintain living requirements documents
|
|
11
|
+
- **Scope Management** - Break requirements into actionable work packages
|
|
12
|
+
- **Repository Sync** - Track implementation progress across repositories
|
|
13
|
+
- **Gap Analysis** - Identify what's implemented vs. what's planned
|
|
14
|
+
- **Claude Code Integration** - Slash commands and multi-session AI runner
|
|
15
|
+
|
|
16
|
+
## Quick Start
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
# Install globally
|
|
20
|
+
npm install -g vibe-fabric
|
|
21
|
+
|
|
22
|
+
# Create a planning hub
|
|
23
|
+
vibe init my-project
|
|
24
|
+
cd my-project
|
|
25
|
+
|
|
26
|
+
# Add a repository to coordinate
|
|
27
|
+
vibe repo add https://github.com/your-org/your-repo
|
|
28
|
+
|
|
29
|
+
# Create/manage PRD with AI assistance
|
|
30
|
+
vibe prd
|
|
31
|
+
|
|
32
|
+
# Create scopes from requirements
|
|
33
|
+
vibe scope
|
|
34
|
+
|
|
35
|
+
# Send scopes to dev repos
|
|
36
|
+
vibe send SCOPE-001
|
|
37
|
+
|
|
38
|
+
# Check project status
|
|
39
|
+
vibe status
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Prerequisites
|
|
43
|
+
|
|
44
|
+
| Requirement | Purpose |
|
|
45
|
+
|-------------|---------|
|
|
46
|
+
| **Node.js 18+** | Runtime for CLI |
|
|
47
|
+
| **Claude Code** | AI-powered commands |
|
|
48
|
+
| **GitHub Token** | Repository operations |
|
|
49
|
+
| **UV** (optional) | Python runner for AI scripts |
|
|
50
|
+
|
|
51
|
+
### Install UV (for AI commands)
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Commands
|
|
58
|
+
|
|
59
|
+
### Core Commands
|
|
60
|
+
|
|
61
|
+
| Command | Description |
|
|
62
|
+
|---------|-------------|
|
|
63
|
+
| `vibe init [name]` | Initialize a planning hub |
|
|
64
|
+
| `vibe repo add <url>` | Add repository to hub |
|
|
65
|
+
| `vibe prd` | AI-powered PRD management |
|
|
66
|
+
| `vibe scope` | AI-powered scope management |
|
|
67
|
+
| `vibe send [scope-id]` | Send scopes to repositories |
|
|
68
|
+
| `vibe sync` | Sync progress from repositories |
|
|
69
|
+
| `vibe status` | Show project status overview |
|
|
70
|
+
| `vibe coverage` | PRD coverage analysis |
|
|
71
|
+
| `vibe gaps` | Gap analysis (PRD vs implementation) |
|
|
72
|
+
| `vibe doctor` | Health check and diagnostics |
|
|
73
|
+
| `vibe claude commands` | Manage Claude Code slash commands |
|
|
74
|
+
|
|
75
|
+
### Examples
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
# Initialize and set up
|
|
79
|
+
vibe init my-project
|
|
80
|
+
vibe repo add https://github.com/org/backend
|
|
81
|
+
vibe repo add https://github.com/org/frontend
|
|
82
|
+
|
|
83
|
+
# AI-assisted workflow
|
|
84
|
+
vibe prd # Create/update requirements
|
|
85
|
+
vibe scope # Generate work scopes
|
|
86
|
+
vibe send SCOPE-001 # Send to dev repo
|
|
87
|
+
|
|
88
|
+
# Monitor progress
|
|
89
|
+
vibe sync # Pull progress from repos
|
|
90
|
+
vibe status # Overview dashboard
|
|
91
|
+
vibe coverage # Detailed coverage report
|
|
92
|
+
vibe gaps # Find implementation gaps
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Architecture
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
PLANNING HUB (your-project/)
|
|
99
|
+
├── docs/prd/ Product requirements
|
|
100
|
+
├── docs/scopes/ Work packages (drafts/completed)
|
|
101
|
+
├── docs/sync-cache/ Synced data from repositories
|
|
102
|
+
├── .claude/ AI commands and scripts
|
|
103
|
+
└── vibe-fabric.toml Configuration
|
|
104
|
+
│
|
|
105
|
+
│ vibe send vibe sync
|
|
106
|
+
▼ ▲
|
|
107
|
+
┌─────────────────┐ ┌─────────────────┐
|
|
108
|
+
│ DEV REPO 1 │ │ DEV REPO 2 │
|
|
109
|
+
│ (backend) │ │ (frontend) │
|
|
110
|
+
├─────────────────┤ ├─────────────────┤
|
|
111
|
+
│ vibe/ │ │ vibe/ │
|
|
112
|
+
│ ├── incoming/ │ │ ├── incoming/ │
|
|
113
|
+
│ └── impl-plans/ │ │ └── impl-plans/ │
|
|
114
|
+
└─────────────────┘ └─────────────────┘
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Documentation
|
|
118
|
+
|
|
119
|
+
- [Installation Guide](docs/wiki/getting-started/installation.md)
|
|
120
|
+
- [Quick Start Tutorial](docs/wiki/getting-started/quick-start.md)
|
|
121
|
+
- [Core Concepts](docs/wiki/getting-started/concepts.md)
|
|
122
|
+
- [Command Reference](docs/wiki/README.md)
|
|
123
|
+
|
|
124
|
+
## Development
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
# Clone the repository
|
|
128
|
+
git clone https://github.com/jneaimi/vibe-fabric.git
|
|
129
|
+
cd vibe-fabric
|
|
130
|
+
|
|
131
|
+
# Install dependencies
|
|
132
|
+
npm install
|
|
133
|
+
|
|
134
|
+
# Build
|
|
135
|
+
npm run build
|
|
136
|
+
|
|
137
|
+
# Run tests
|
|
138
|
+
npm test
|
|
139
|
+
|
|
140
|
+
# Run CLI locally
|
|
141
|
+
node dist/cli/index.js --help
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## Project Structure
|
|
145
|
+
|
|
146
|
+
```
|
|
147
|
+
vibe-fabric/
|
|
148
|
+
├── src/
|
|
149
|
+
│ ├── cli/ CLI commands (Clipanion)
|
|
150
|
+
│ ├── core/ Core business logic
|
|
151
|
+
│ └── types/ TypeScript types
|
|
152
|
+
├── tests/ Test suite (Vitest)
|
|
153
|
+
├── docs/
|
|
154
|
+
│ ├── prd/ Product requirements
|
|
155
|
+
│ ├── scopes/ Implementation scopes
|
|
156
|
+
│ └── wiki/ User documentation
|
|
157
|
+
└── .claude/ Claude Code integration
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## Contributing
|
|
161
|
+
|
|
162
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|
163
|
+
|
|
164
|
+
## License
|
|
165
|
+
|
|
166
|
+
[MIT](LICENSE)
|
|
167
|
+
|
|
168
|
+
## Support
|
|
169
|
+
|
|
170
|
+
- **Issues**: [GitHub Issues](https://github.com/jneaimi/vibe-fabric/issues)
|
|
171
|
+
- **Discussions**: [GitHub Discussions](https://github.com/jneaimi/vibe-fabric/discussions)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Command } from 'clipanion';
|
|
2
|
+
/**
|
|
3
|
+
* vibe claude commands - Manage Claude Code commands
|
|
4
|
+
*/
|
|
5
|
+
export declare class ClaudeCommandsCommand extends Command {
|
|
6
|
+
static paths: string[][];
|
|
7
|
+
static usage: import("clipanion").Usage;
|
|
8
|
+
list: boolean;
|
|
9
|
+
execute(): Promise<number>;
|
|
10
|
+
/**
|
|
11
|
+
* List all available commands
|
|
12
|
+
*/
|
|
13
|
+
private listAllCommands;
|
|
14
|
+
/**
|
|
15
|
+
* Regenerate built-in commands
|
|
16
|
+
*/
|
|
17
|
+
private regenerateCommands;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=claude.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/claude.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAU5C;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,OAAO;IAChD,OAAgB,KAAK,aAA4B;IAEjD,OAAgB,KAAK,4BAYlB;IAEH,IAAI,UAED;IAEG,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAmBhC;;OAEG;YACW,eAAe;IAqD7B;;OAEG;YACW,kBAAkB;CAiCjC"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { Command, Option } from 'clipanion';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import ora from 'ora';
|
|
4
|
+
import { isVibeProject } from '../../core/config.js';
|
|
5
|
+
import { generatePlanningHubCommands, listCommands, ensureCustomCommandsDir, } from '../../core/commands.js';
|
|
6
|
+
/**
|
|
7
|
+
* vibe claude commands - Manage Claude Code commands
|
|
8
|
+
*/
|
|
9
|
+
export class ClaudeCommandsCommand extends Command {
|
|
10
|
+
static paths = [['claude', 'commands']];
|
|
11
|
+
static usage = Command.Usage({
|
|
12
|
+
description: 'Generate and manage Claude Code commands',
|
|
13
|
+
details: `
|
|
14
|
+
Manages the .claude/commands/ directory for slash commands.
|
|
15
|
+
|
|
16
|
+
Without flags, regenerates all built-in planning hub commands.
|
|
17
|
+
Custom commands in .claude/commands/custom/ are never overwritten.
|
|
18
|
+
`,
|
|
19
|
+
examples: [
|
|
20
|
+
['Regenerate commands', 'vibe claude commands'],
|
|
21
|
+
['List all commands', 'vibe claude commands --list'],
|
|
22
|
+
],
|
|
23
|
+
});
|
|
24
|
+
list = Option.Boolean('--list,-l', false, {
|
|
25
|
+
description: 'List all available commands',
|
|
26
|
+
});
|
|
27
|
+
async execute() {
|
|
28
|
+
// Check if in a vibe project
|
|
29
|
+
if (!isVibeProject(process.cwd())) {
|
|
30
|
+
this.context.stderr.write(chalk.red('Error: Not in a vibe-fabric project.\n'));
|
|
31
|
+
this.context.stderr.write(chalk.gray('Run `vibe init` to create a project first.\n'));
|
|
32
|
+
return 1;
|
|
33
|
+
}
|
|
34
|
+
if (this.list) {
|
|
35
|
+
return this.listAllCommands();
|
|
36
|
+
}
|
|
37
|
+
return this.regenerateCommands();
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* List all available commands
|
|
41
|
+
*/
|
|
42
|
+
async listAllCommands() {
|
|
43
|
+
const spinner = ora('Scanning commands...').start();
|
|
44
|
+
try {
|
|
45
|
+
const { builtin, custom } = await listCommands(process.cwd());
|
|
46
|
+
spinner.stop();
|
|
47
|
+
this.context.stdout.write('\n');
|
|
48
|
+
this.context.stdout.write(chalk.bold('Planning Hub Commands:\n'));
|
|
49
|
+
this.context.stdout.write(chalk.gray('─'.repeat(50)) + '\n');
|
|
50
|
+
if (builtin.length === 0) {
|
|
51
|
+
this.context.stdout.write(chalk.gray(' No commands found. Run `vibe claude commands` to generate.\n'));
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
for (const cmd of builtin) {
|
|
55
|
+
const modelTag = cmd.model ? chalk.dim(` [${cmd.model}]`) : '';
|
|
56
|
+
this.context.stdout.write(` ${chalk.cyan('/' + cmd.name.padEnd(18))} ${cmd.description}${modelTag}\n`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
if (custom.length > 0) {
|
|
60
|
+
this.context.stdout.write('\n');
|
|
61
|
+
this.context.stdout.write(chalk.bold('Custom Commands:\n'));
|
|
62
|
+
this.context.stdout.write(chalk.gray('─'.repeat(50)) + '\n');
|
|
63
|
+
for (const cmd of custom) {
|
|
64
|
+
const modelTag = cmd.model ? chalk.dim(` [${cmd.model}]`) : '';
|
|
65
|
+
this.context.stdout.write(` ${chalk.green('/' + cmd.name.padEnd(18))} ${cmd.description}${modelTag}\n`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
this.context.stdout.write('\n');
|
|
69
|
+
this.context.stdout.write(chalk.gray('Use these commands in Claude Code with /<command-name>\n'));
|
|
70
|
+
this.context.stdout.write('\n');
|
|
71
|
+
return 0;
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
spinner.fail('Failed to list commands');
|
|
75
|
+
this.context.stderr.write(chalk.red(`Error: ${error instanceof Error ? error.message : 'Unknown error'}\n`));
|
|
76
|
+
return 1;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Regenerate built-in commands
|
|
81
|
+
*/
|
|
82
|
+
async regenerateCommands() {
|
|
83
|
+
const spinner = ora('Regenerating commands...').start();
|
|
84
|
+
try {
|
|
85
|
+
// Ensure custom directory exists (won't be overwritten)
|
|
86
|
+
await ensureCustomCommandsDir(process.cwd());
|
|
87
|
+
// Generate planning hub commands
|
|
88
|
+
const created = await generatePlanningHubCommands(process.cwd());
|
|
89
|
+
spinner.succeed(`Generated ${created.length} commands`);
|
|
90
|
+
this.context.stdout.write('\n');
|
|
91
|
+
this.context.stdout.write(chalk.bold('Commands created:\n'));
|
|
92
|
+
for (const name of created) {
|
|
93
|
+
this.context.stdout.write(` ${chalk.green('✓')} ${name}\n`);
|
|
94
|
+
}
|
|
95
|
+
this.context.stdout.write('\n');
|
|
96
|
+
this.context.stdout.write(chalk.gray('Run `vibe claude commands --list` to see all commands.\n'));
|
|
97
|
+
this.context.stdout.write('\n');
|
|
98
|
+
return 0;
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
spinner.fail('Failed to generate commands');
|
|
102
|
+
this.context.stderr.write(chalk.red(`Error: ${error instanceof Error ? error.message : 'Unknown error'}\n`));
|
|
103
|
+
return 1;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=claude.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../src/cli/commands/claude.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* vibe coverage - Detailed PRD coverage analysis
|
|
3
|
+
*
|
|
4
|
+
* Displays detailed coverage of PRD requirements including
|
|
5
|
+
* per-requirement breakdowns, module filtering, and status grouping.
|
|
6
|
+
*/
|
|
7
|
+
import { Command } from 'clipanion';
|
|
8
|
+
export declare class CoverageCommand extends Command {
|
|
9
|
+
static paths: string[][];
|
|
10
|
+
static usage: import("clipanion").Usage;
|
|
11
|
+
byModule: boolean;
|
|
12
|
+
byStatus: boolean;
|
|
13
|
+
module: string | undefined;
|
|
14
|
+
json: boolean;
|
|
15
|
+
execute(): Promise<number>;
|
|
16
|
+
/**
|
|
17
|
+
* Output JSON format
|
|
18
|
+
*/
|
|
19
|
+
private outputJson;
|
|
20
|
+
/**
|
|
21
|
+
* Output summary view (default)
|
|
22
|
+
*/
|
|
23
|
+
private outputSummary;
|
|
24
|
+
/**
|
|
25
|
+
* Output by-module view (detailed breakdown)
|
|
26
|
+
*/
|
|
27
|
+
private outputByModule;
|
|
28
|
+
/**
|
|
29
|
+
* Output by-status view
|
|
30
|
+
*/
|
|
31
|
+
private outputByStatus;
|
|
32
|
+
/**
|
|
33
|
+
* Output single module detail view
|
|
34
|
+
*/
|
|
35
|
+
private outputModuleDetail;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=coverage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coverage.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/coverage.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAoC5C,qBAAa,eAAgB,SAAQ,OAAO;IAC1C,OAAgB,KAAK,aAAkB;IAEvC,OAAgB,KAAK,4BAkBlB;IAGH,QAAQ,UAEL;IAEH,QAAQ,UAEL;IAEH,MAAM,qBAEH;IAEH,IAAI,UAED;IAEG,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAiGhC;;OAEG;IACH,OAAO,CAAC,UAAU;IAMlB;;OAEG;IACH,OAAO,CAAC,aAAa;IA4ErB;;OAEG;IACH,OAAO,CAAC,cAAc;IAqCtB;;OAEG;IACH,OAAO,CAAC,cAAc;IAsDtB;;OAEG;YACW,kBAAkB;CA+HjC"}
|