vibe-forge 0.2.1 → 0.3.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.
@@ -18,45 +18,51 @@ Based on the first argument, do ONE of the following:
18
18
  You are now the **Vibe Forge Planning Hub** - a multi-expert planning team.
19
19
 
20
20
  #### Your Identity
21
- @agents/planning-hub/personality.md
21
+
22
+ @_vibe-forge/agents/planning-hub/personality.md
22
23
 
23
24
  #### Project Context
25
+
24
26
  @context/project-context.md
25
27
 
26
28
  #### Current Forge State
27
- @context/forge-state.yaml
29
+
30
+ @_vibe-forge/context/forge-state.yaml
28
31
 
29
32
  #### Task Overview
30
- Pending tasks:
31
- !`ls tasks/pending/ 2>/dev/null || echo "None"`
32
33
 
33
- In-progress tasks:
34
- !`ls tasks/in-progress/ 2>/dev/null || echo "None"`
34
+ Check the task folders for current work:
35
35
 
36
- Tasks needing changes:
37
- !`ls tasks/needs-changes/ 2>/dev/null || echo "None"`
36
+ - `_vibe-forge/tasks/pending/` - Tasks waiting to be picked up
37
+ - `_vibe-forge/tasks/in-progress/` - Tasks currently being worked on
38
+ - `_vibe-forge/tasks/needs-changes/` - Tasks that need revision
38
39
 
39
- **Startup:** Display the team assembly welcome as shown in your personality's Startup Behavior section. Show the forge council assembling, then check current work status.
40
+ **Startup:** Display the team assembly welcome as shown in your personality's Startup Behavior section. Show the forge council assembling, then use the Glob tool to check for .md files in the task folders above and report the current work status.
40
41
 
41
42
  ---
42
43
 
43
44
  ### If `$1` is "status" → Show Status Dashboard
44
45
 
45
- Display a formatted status dashboard:
46
+ Display a formatted status dashboard.
46
47
 
47
48
  #### Forge State
48
- @context/forge-state.yaml
49
+
50
+ @_vibe-forge/context/forge-state.yaml
49
51
 
50
52
  #### Task Counts
51
- !`echo "Pending: $(ls tasks/pending/*.md 2>/dev/null | wc -l || echo 0)"`
52
- !`echo "In Progress: $(ls tasks/in-progress/*.md 2>/dev/null | wc -l || echo 0)"`
53
- !`echo "Completed: $(ls tasks/completed/*.md 2>/dev/null | wc -l || echo 0)"`
54
- !`echo "In Review: $(ls tasks/review/*.md 2>/dev/null | wc -l || echo 0)"`
55
- !`echo "Needs Changes: $(ls tasks/needs-changes/*.md 2>/dev/null | wc -l || echo 0)"`
56
- !`echo "Approved: $(ls tasks/approved/*.md 2>/dev/null | wc -l || echo 0)"`
53
+
54
+ Use the Glob tool to count .md files in each task folder:
55
+
56
+ - `_vibe-forge/tasks/pending/*.md` - Pending
57
+ - `_vibe-forge/tasks/in-progress/*.md` - In Progress
58
+ - `_vibe-forge/tasks/completed/*.md` - Completed
59
+ - `_vibe-forge/tasks/review/*.md` - In Review
60
+ - `_vibe-forge/tasks/needs-changes/*.md` - Needs Changes
61
+ - `_vibe-forge/tasks/approved/*.md` - Approved
57
62
 
58
63
  Format output like:
59
- ```
64
+
65
+ ```text
60
66
  🔥 VIBE FORGE - Status Dashboard
61
67
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
62
68
  [Task counts and state summary]
@@ -71,23 +77,23 @@ Format output like:
71
77
 
72
78
  Available agents (with aliases):
73
79
 
74
- | Agent | Aliases | Role |
75
- |-------|---------|------|
76
- | anvil | frontend, ui, fe | Frontend Developer |
77
- | furnace | backend, api, be | Backend Developer |
78
- | crucible | test, testing, qa | Tester / QA |
79
- | sentinel | review, reviewer, cr | Code Reviewer |
80
- | scribe | docs, documentation | Documentation |
81
- | herald | release, deploy | Release Manager |
82
- | ember | devops, ops, infra | DevOps |
83
- | aegis | security, sec, appsec | Security |
80
+ | Agent | Aliases | Role |
81
+ | -------- | -------------------- | ----------------- |
82
+ | anvil | frontend, ui, fe | Frontend Developer |
83
+ | furnace | backend, api, be | Backend Developer |
84
+ | crucible | test, testing, qa | Tester / QA |
85
+ | sentinel | review, reviewer, cr | Code Reviewer |
86
+ | scribe | docs, documentation | Documentation |
87
+ | herald | release, deploy | Release Manager |
88
+ | ember | devops, ops, infra | DevOps |
89
+ | aegis | security, sec, appsec | Security |
84
90
 
85
91
  If `$2` is empty, show the table above and ask which agent to spawn.
86
92
 
87
93
  If `$2` is provided, run:
88
94
 
89
95
  ```bash
90
- ./bin/forge-spawn.sh $2
96
+ ./_vibe-forge/bin/forge-spawn.sh $2
91
97
  ```
92
98
 
93
99
  Confirm the spawn. If an alias was used (e.g., "frontend"), mention the resolved name: "Spawning **Anvil** (frontend)..."
@@ -99,17 +105,20 @@ Confirm the spawn. If an alias was used (e.g., "frontend"), mention the resolved
99
105
  **Task description:** `$2` `$3` `$4` (remaining arguments)
100
106
 
101
107
  #### Task Template
102
- @config/task-template.md
108
+
109
+ @_vibe-forge/config/task-template.md
103
110
 
104
111
  #### Existing Tasks
105
- !`ls tasks/pending/ 2>/dev/null || echo "None pending"`
112
+
113
+ Use the Glob tool to list files in `_vibe-forge/tasks/pending/*.md`
106
114
 
107
115
  If no description provided, ask:
116
+
108
117
  - What needs to be done?
109
118
  - Which agent? (anvil, furnace, crucible, sentinel, scribe, herald, ember, aegis)
110
119
  - Priority? (high, medium, low)
111
120
 
112
- Generate task ID as `task-XXX` (next sequential number), create file at `tasks/pending/task-XXX.md`.
121
+ Generate task ID as `task-XXX` (next sequential number), create file at `_vibe-forge/tasks/pending/task-XXX.md`.
113
122
 
114
123
  ---
115
124
 
@@ -1,7 +1,16 @@
1
1
  {
2
2
  "permissions": {
3
3
  "allow": [
4
- "Bash(ls:*)"
4
+ "Bash(ls:*)",
5
+ "Bash(git pull:*)",
6
+ "Bash(npm view:*)",
7
+ "Bash(gh run list:*)",
8
+ "Bash(gh run view:*)",
9
+ "Bash(gh secret list:*)",
10
+ "Bash(git add:*)",
11
+ "Bash(git commit:*)",
12
+ "Bash(gh workflow run:*)",
13
+ "Bash(gh repo view:*)"
5
14
  ]
6
15
  }
7
16
  }
@@ -305,7 +305,36 @@ configure_daemon() {
305
305
  }
306
306
 
307
307
  # =============================================================================
308
- # STEP 8: Create Project Context
308
+ # STEP 8: Install Slash Command
309
+ # =============================================================================
310
+
311
+ install_slash_command() {
312
+ echo ""
313
+ echo "Installing /forge slash command..."
314
+
315
+ # Parent project directory (one level up from _vibe-forge)
316
+ local parent_dir
317
+ parent_dir="$(dirname "$FORGE_ROOT")"
318
+
319
+ local target_dir="$parent_dir/.claude/commands"
320
+ local source_file="$FORGE_ROOT/.claude/commands/forge.md"
321
+
322
+ # Create .claude/commands in parent project if it doesn't exist
323
+ mkdir -p "$target_dir"
324
+
325
+ # Copy the forge command
326
+ if [[ -f "$source_file" ]]; then
327
+ cp "$source_file" "$target_dir/forge.md"
328
+ echo -e "${GREEN}✅ Slash command installed:${NC} $target_dir/forge.md"
329
+ echo " Use /forge in Claude Code to access Vibe Forge"
330
+ else
331
+ echo -e "${YELLOW}⚠️ Could not find forge command template${NC}"
332
+ echo " You may need to manually copy .claude/commands/forge.md"
333
+ fi
334
+ }
335
+
336
+ # =============================================================================
337
+ # STEP 9: Create Project Context
309
338
  # =============================================================================
310
339
 
311
340
  detect_project_info() {
@@ -414,7 +443,7 @@ EOF
414
443
  }
415
444
 
416
445
  # =============================================================================
417
- # STEP 9: Setup Complete
446
+ # STEP 10: Setup Complete
418
447
  # =============================================================================
419
448
 
420
449
  setup_complete() {
@@ -423,11 +452,12 @@ setup_complete() {
423
452
  echo -e "${GREEN}🔥 Vibe Forge initialized!${NC}"
424
453
  echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
425
454
  echo ""
426
- echo "Ready to start! Run:"
455
+ echo "Ready to start! Open Claude Code in this project and run:"
427
456
  echo ""
428
- echo -e " ${BLUE}forge${NC} Start the Planning Hub"
429
- echo -e " ${BLUE}forge status${NC} Check forge status"
430
- echo -e " ${BLUE}forge help${NC} See all commands"
457
+ echo -e " ${BLUE}/forge${NC} Start the Planning Hub"
458
+ echo -e " ${BLUE}/forge status${NC} Show status dashboard"
459
+ echo -e " ${BLUE}/forge spawn anvil${NC} Spawn a worker agent"
460
+ echo -e " ${BLUE}/forge help${NC} See all commands"
431
461
  echo ""
432
462
  echo "Optional: Edit context/project-context.md to add more details."
433
463
  echo ""
@@ -446,6 +476,7 @@ main() {
446
476
  if validate_setup; then
447
477
  configure_terminal
448
478
  configure_daemon
479
+ install_slash_command
449
480
  create_project_context
450
481
  setup_complete
451
482
  else
@@ -0,0 +1,95 @@
1
+ # npm Publishing with OIDC Trusted Publishing
2
+
3
+ This document explains how Vibe Forge publishes to npm using GitHub Actions OIDC trusted publishing - no npm tokens required.
4
+
5
+ ## Overview
6
+
7
+ npm's [trusted publishing](https://docs.npmjs.com/trusted-publishers/) uses OpenID Connect (OIDC) to authenticate GitHub Actions workflows directly with npm. This eliminates the need to store npm tokens as secrets.
8
+
9
+ ## Requirements
10
+
11
+ 1. **npm CLI v11.5.1+** - OIDC support was added in npm 11.5.1
12
+ 2. **Public GitHub repository** - Provenance attestation only works with public repos
13
+ 3. **Trusted Publisher configured on npmjs.com** - Links your package to your GitHub repo
14
+
15
+ ## Setup
16
+
17
+ ### 1. Configure Trusted Publisher on npm
18
+
19
+ 1. Go to https://www.npmjs.com/package/vibe-forge/access
20
+ 2. Under "Trusted Publishers", add a new publisher:
21
+ - **Publisher**: GitHub Actions
22
+ - **Organization/user**: SpasticPalate
23
+ - **Repository**: vibe-forge
24
+ - **Workflow filename**: publish.yml
25
+ - **Environment name**: (leave empty)
26
+
27
+ ### 2. GitHub Actions Workflow
28
+
29
+ The workflow requires specific permissions and npm version:
30
+
31
+ ```yaml
32
+ jobs:
33
+ publish:
34
+ runs-on: ubuntu-latest
35
+ permissions:
36
+ contents: read
37
+ id-token: write # Required for OIDC token generation
38
+ steps:
39
+ - uses: actions/checkout@v4
40
+
41
+ - uses: actions/setup-node@v4
42
+ with:
43
+ node-version: '22'
44
+
45
+ # npm 11.5.1+ required for OIDC
46
+ - run: npm install -g npm@latest
47
+
48
+ - run: npm publish --provenance --access public
49
+ ```
50
+
51
+ Key points:
52
+ - `id-token: write` permission enables OIDC token generation
53
+ - `--provenance` flag enables signed provenance attestation
54
+ - No `NODE_AUTH_TOKEN` or `NPM_TOKEN` needed
55
+
56
+ ## Troubleshooting
57
+
58
+ ### "Access token expired or revoked" with E404
59
+
60
+ **Cause**: npm CLI version is too old (< 11.5.1)
61
+
62
+ **Fix**: Add `npm install -g npm@latest` before publishing
63
+
64
+ ### "Unsupported GitHub Actions source repository visibility: private"
65
+
66
+ **Cause**: Provenance attestation only works with public repositories
67
+
68
+ **Fix**: Either make the repo public, or remove `--provenance` and use a granular npm token instead
69
+
70
+ ### "ENEEDAUTH - need auth"
71
+
72
+ **Cause**: OIDC token not being generated/used
73
+
74
+ **Fix**: Ensure `id-token: write` permission is set on the job
75
+
76
+ ### 404 on publish despite correct setup
77
+
78
+ **Cause**: Trusted Publisher configuration doesn't match workflow
79
+
80
+ **Fix**: Verify on npmjs.com that:
81
+ - Organization/user matches exactly (case-sensitive)
82
+ - Repository name matches exactly
83
+ - Workflow filename matches exactly (e.g., `publish.yml`)
84
+
85
+ ## Benefits
86
+
87
+ - **No secrets to manage** - No npm tokens to rotate or accidentally expose
88
+ - **Provenance attestation** - Packages are cryptographically signed with build info
89
+ - **Audit trail** - Provenance is published to Sigstore transparency log
90
+
91
+ ## References
92
+
93
+ - [npm Trusted Publishers](https://docs.npmjs.com/trusted-publishers/)
94
+ - [npm Provenance](https://docs.npmjs.com/generating-provenance-statements/)
95
+ - [GitHub: npm trusted publishing GA](https://github.blog/changelog/2025-07-31-npm-trusted-publishing-with-oidc-is-generally-available/)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibe-forge",
3
- "version": "0.2.1",
3
+ "version": "0.3.1",
4
4
  "description": "Multi-agent development orchestration system for terminal-native vibe coding",
5
5
  "keywords": [
6
6
  "vibe-coding",