vibe-forge 0.4.0 → 0.8.2
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/.claude/commands/clear-attention.md +63 -63
- package/.claude/commands/compact-context.md +52 -0
- package/.claude/commands/configure-vcs.md +5 -5
- package/.claude/commands/forge.md +50 -3
- package/.claude/commands/need-help.md +77 -77
- package/.claude/commands/update-status.md +64 -64
- package/.claude/commands/worker-loop.md +106 -106
- package/.claude/hooks/worker-loop.js +37 -4
- package/.claude/scripts/setup-worker-loop.sh +45 -45
- package/.claude/settings.json +89 -0
- package/LICENSE +21 -21
- package/README.md +211 -232
- package/agents/aegis/personality.md +35 -1
- package/agents/anvil/personality.md +39 -1
- package/agents/architect/personality.md +26 -0
- package/agents/crucible/personality.md +54 -1
- package/agents/crucible-x/personality.md +210 -0
- package/agents/ember/personality.md +29 -1
- package/agents/flux/personality.md +248 -0
- package/agents/furnace/personality.md +52 -1
- package/agents/herald/personality.md +3 -1
- package/agents/loki/personality.md +108 -0
- package/agents/oracle/personality.md +284 -0
- package/agents/pixel/personality.md +140 -0
- package/agents/planning-hub/personality.md +222 -0
- package/agents/scribe/personality.md +3 -1
- package/agents/slag/personality.md +268 -0
- package/agents/{sentinel → temper}/personality.md +85 -9
- package/bin/cli.js +77 -30
- package/bin/dashboard/api/agents.js +333 -0
- package/bin/dashboard/api/dispatch.js +507 -0
- package/bin/dashboard/api/tasks.js +416 -0
- package/bin/dashboard/public/assets/index-BpHfsx1r.js +2 -0
- package/bin/dashboard/public/assets/index-QODv4Zn9.css +1 -0
- package/bin/dashboard/public/index.html +14 -0
- package/bin/dashboard/server.js +645 -0
- package/bin/forge-daemon.sh +176 -550
- package/bin/forge-setup.sh +28 -11
- package/bin/forge-spawn.sh +5 -5
- package/bin/forge.cmd +83 -83
- package/bin/forge.sh +210 -31
- package/config/agent-manifest.yaml +237 -243
- package/config/agents.json +207 -132
- package/config/task-types.yaml +111 -106
- package/context/agent-overrides/README.md +41 -0
- package/context/architecture.md +42 -0
- package/context/modern-conventions.md +129 -129
- package/docs/agents.md +473 -409
- package/docs/architecture.md +194 -162
- package/docs/commands.md +451 -388
- package/docs/security.md +195 -144
- package/package.json +38 -11
- package/src/lib/check-aliases.js +50 -0
- package/{bin → src}/lib/colors.sh +2 -1
- package/src/lib/config.sh +347 -0
- package/{bin → src}/lib/constants.sh +48 -13
- package/src/lib/daemon/budgets.sh +107 -0
- package/src/lib/daemon/dependencies.sh +146 -0
- package/src/lib/daemon/display.sh +128 -0
- package/src/lib/daemon/notifications.sh +273 -0
- package/src/lib/daemon/routing.sh +93 -0
- package/src/lib/daemon/state.sh +163 -0
- package/src/lib/daemon/sync.sh +103 -0
- package/{bin → src}/lib/database.sh +52 -0
- package/src/lib/frontmatter.js +106 -0
- package/src/lib/heimdall-setup.js +113 -0
- package/src/lib/heimdall.js +265 -0
- package/src/lib/index.sh +25 -0
- package/{bin → src}/lib/json.sh +7 -1
- package/{bin → src}/lib/terminal.js +7 -1
- package/.claude/settings.local.json +0 -33
- package/agents/forge-master/capabilities.md +0 -144
- package/agents/forge-master/context-template.md +0 -128
- package/agents/forge-master/personality.md +0 -138
- package/bin/lib/config.sh +0 -313
- package/config/task-template.md +0 -87
- package/context/forge-state.yaml +0 -19
- package/docs/TODO.md +0 -150
- package/docs/getting-started.md +0 -243
- package/docs/npm-publishing.md +0 -95
- package/docs/workflows/README.md +0 -32
- package/docs/workflows/azure-devops.md +0 -108
- package/docs/workflows/bitbucket.md +0 -104
- package/docs/workflows/git-only.md +0 -130
- package/docs/workflows/gitea.md +0 -168
- package/docs/workflows/github.md +0 -103
- package/docs/workflows/gitlab.md +0 -105
- package/docs/workflows.md +0 -454
- package/tasks/completed/ARCH-001-duplicate-agent-config.md +0 -121
- package/tasks/completed/ARCH-002-mixed-bash-node-implementation.md +0 -88
- package/tasks/completed/ARCH-003-worker-loop-hook-duplication.md +0 -77
- package/tasks/completed/ARCH-009-test-organization.md +0 -78
- package/tasks/completed/ARCH-011-jq-vs-nodejs-json.md +0 -94
- package/tasks/completed/ARCH-012-tmp-files-in-root.md +0 -71
- package/tasks/completed/ARCH-013-exit-code-constants.md +0 -65
- package/tasks/completed/ARCH-014-sed-incompatibility.md +0 -96
- package/tasks/completed/ARCH-015-docs-todo-tracking.md +0 -83
- package/tasks/completed/CLEAN-001.md +0 -38
- package/tasks/completed/CLEAN-003.md +0 -47
- package/tasks/completed/CLEAN-004.md +0 -56
- package/tasks/completed/CLEAN-005.md +0 -75
- package/tasks/completed/CLEAN-006.md +0 -47
- package/tasks/completed/CLEAN-007.md +0 -34
- package/tasks/completed/CLEAN-008.md +0 -49
- package/tasks/completed/CLEAN-012.md +0 -58
- package/tasks/completed/CLEAN-013.md +0 -45
- package/tasks/completed/SEC-001-sql-injection-fix.md +0 -58
- package/tasks/completed/SEC-002-notification-injection-fix.md +0 -45
- package/tasks/completed/SEC-003-eval-injection-fix.md +0 -54
- package/tasks/completed/SEC-004-pid-race-condition-fix.md +0 -49
- package/tasks/completed/SEC-005-worker-loop-path-fix.md +0 -51
- package/tasks/completed/SEC-006-eval-agent-names.md +0 -55
- package/tasks/completed/SEC-007-spawn-escaping.md +0 -67
- package/tasks/pending/ARCH-004-git-bash-detection-duplication.md +0 -72
- package/tasks/pending/ARCH-005-missing-src-directory.md +0 -95
- package/tasks/pending/ARCH-006-task-template-location.md +0 -64
- package/tasks/pending/ARCH-007-daemon-monolith.md +0 -91
- package/tasks/pending/ARCH-008-forge-master-vs-hub.md +0 -81
- package/tasks/pending/ARCH-010-missing-index-files.md +0 -84
- package/tasks/pending/CLEAN-002.md +0 -29
- package/tasks/pending/CLEAN-009.md +0 -31
- package/tasks/pending/CLEAN-010.md +0 -30
- package/tasks/pending/CLEAN-011.md +0 -30
- package/tasks/pending/CLEAN-014.md +0 -32
- package/tasks/review/task-001.md +0 -78
- /package/{bin → src}/lib/agents.sh +0 -0
- /package/{bin → src}/lib/util.sh +0 -0
- /package/{bin → src}/lib/vcs.js +0 -0
- /package/{context → templates}/project-context-template.md +0 -0
|
@@ -1,129 +1,129 @@
|
|
|
1
|
-
# Modern Development Conventions
|
|
2
|
-
|
|
3
|
-
Reference for up-to-date tooling and naming conventions. Knowledge cutoffs can cause outdated suggestions - prefer these modern approaches.
|
|
4
|
-
|
|
5
|
-
## Docker & Containers
|
|
6
|
-
|
|
7
|
-
### Compose (V2+, 2021)
|
|
8
|
-
|
|
9
|
-
- **File name:** `compose.yml` or `compose.yaml` (NOT `docker-compose.yml`)
|
|
10
|
-
- **Command:** `docker compose` (NOT `docker-compose`)
|
|
11
|
-
- Compose V2 is built into Docker CLI, no separate install needed
|
|
12
|
-
- `docker-compose` (hyphenated) is legacy V1
|
|
13
|
-
|
|
14
|
-
```yaml
|
|
15
|
-
# compose.yml (modern)
|
|
16
|
-
services:
|
|
17
|
-
app:
|
|
18
|
-
build: .
|
|
19
|
-
ports:
|
|
20
|
-
- "3000:3000"
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
### Docker Best Practices
|
|
24
|
-
|
|
25
|
-
- Use multi-stage builds for smaller images
|
|
26
|
-
- Prefer `COPY` over `ADD` unless extracting archives
|
|
27
|
-
- Use `.dockerignore` to exclude node_modules, .git, etc.
|
|
28
|
-
- Pin base image versions (e.g., `node:20-alpine`, not `node:latest`)
|
|
29
|
-
|
|
30
|
-
## Package Managers
|
|
31
|
-
|
|
32
|
-
### Node.js
|
|
33
|
-
|
|
34
|
-
- **npm:** v7+ supports workspaces, lockfile v2
|
|
35
|
-
- **pnpm:** Preferred for monorepos, faster, stricter
|
|
36
|
-
- **Bun:** Fast runtime + package manager, growing adoption
|
|
37
|
-
|
|
38
|
-
### Python
|
|
39
|
-
|
|
40
|
-
- **uv:** Modern, fast replacement for pip/pip-tools (2024+)
|
|
41
|
-
- **poetry:** Dependency management + packaging
|
|
42
|
-
- **pipx:** For CLI tools (don't pip install globally)
|
|
43
|
-
|
|
44
|
-
## TypeScript
|
|
45
|
-
|
|
46
|
-
- **Config:** `tsconfig.json` with `"moduleResolution": "bundler"` for modern bundlers
|
|
47
|
-
- **Strict mode:** Always enable `"strict": true`
|
|
48
|
-
- **Node types:** `@types/node` version should match Node.js version
|
|
49
|
-
|
|
50
|
-
## Testing
|
|
51
|
-
|
|
52
|
-
### JavaScript/TypeScript
|
|
53
|
-
|
|
54
|
-
- **Vitest:** Modern, fast, Vite-native (preferred for new projects)
|
|
55
|
-
- **Jest:** Still widely used, v30+ reduces deprecated deps
|
|
56
|
-
- **Playwright:** E2E testing, cross-browser
|
|
57
|
-
|
|
58
|
-
### Python
|
|
59
|
-
|
|
60
|
-
- **pytest:** Standard, use over unittest
|
|
61
|
-
- **pytest-cov:** Coverage reporting
|
|
62
|
-
|
|
63
|
-
## CI/CD
|
|
64
|
-
|
|
65
|
-
### GitHub Actions
|
|
66
|
-
|
|
67
|
-
- Use `actions/checkout@v4`, `actions/setup-node@v4` (latest major versions)
|
|
68
|
-
- Prefer `npm ci` over `npm install` in CI
|
|
69
|
-
- Use job matrices for cross-platform testing
|
|
70
|
-
|
|
71
|
-
## Linting & Formatting
|
|
72
|
-
|
|
73
|
-
### JavaScript/TypeScript
|
|
74
|
-
|
|
75
|
-
- **ESLint v9+:** Flat config (`eslint.config.js`, not `.eslintrc`)
|
|
76
|
-
- **Prettier:** Code formatting (or use ESLint with stylistic rules)
|
|
77
|
-
- **Biome:** Fast all-in-one linter + formatter (Rust-based)
|
|
78
|
-
|
|
79
|
-
### Python
|
|
80
|
-
|
|
81
|
-
- **Ruff:** Fast linter + formatter (replaces flake8, black, isort)
|
|
82
|
-
- **mypy:** Type checking
|
|
83
|
-
|
|
84
|
-
## API Design
|
|
85
|
-
|
|
86
|
-
### REST
|
|
87
|
-
|
|
88
|
-
- Use plural nouns for collections (`/users`, not `/user`)
|
|
89
|
-
- HTTP methods: GET (read), POST (create), PUT/PATCH (update), DELETE
|
|
90
|
-
- Status codes: 200 OK, 201 Created, 400 Bad Request, 404 Not Found, 500 Server Error
|
|
91
|
-
|
|
92
|
-
### Authentication
|
|
93
|
-
|
|
94
|
-
- **JWTs:** Short expiry + refresh tokens, store in httpOnly cookies (not localStorage)
|
|
95
|
-
- **OAuth 2.0 / OIDC:** For third-party auth
|
|
96
|
-
- **Passkeys/WebAuthn:** Modern passwordless option
|
|
97
|
-
|
|
98
|
-
## Database
|
|
99
|
-
|
|
100
|
-
### ORMs
|
|
101
|
-
|
|
102
|
-
- **Prisma:** Type-safe, great DX for Node.js/TypeScript
|
|
103
|
-
- **Drizzle:** Lightweight, SQL-like syntax
|
|
104
|
-
- **SQLAlchemy 2.0:** Python standard (note: 2.0 syntax differs from 1.x)
|
|
105
|
-
|
|
106
|
-
### Migrations
|
|
107
|
-
|
|
108
|
-
- Always use migrations, never manual schema changes in production
|
|
109
|
-
- Version control migration files
|
|
110
|
-
|
|
111
|
-
## Frontend
|
|
112
|
-
|
|
113
|
-
### React
|
|
114
|
-
|
|
115
|
-
- **React 18+:** Concurrent features, Suspense
|
|
116
|
-
- Prefer function components + hooks over class components
|
|
117
|
-
- Use React Server Components where appropriate (Next.js 13+)
|
|
118
|
-
|
|
119
|
-
### State Management
|
|
120
|
-
|
|
121
|
-
- Start with React Context + useReducer
|
|
122
|
-
- **Zustand:** Simple, minimal boilerplate
|
|
123
|
-
- **TanStack Query:** For server state (caching, refetching)
|
|
124
|
-
|
|
125
|
-
## Monorepos
|
|
126
|
-
|
|
127
|
-
- **Turborepo:** Fast builds, caching
|
|
128
|
-
- **Nx:** Full-featured, good for enterprise
|
|
129
|
-
- **pnpm workspaces:** Native package manager support
|
|
1
|
+
# Modern Development Conventions
|
|
2
|
+
|
|
3
|
+
Reference for up-to-date tooling and naming conventions. Knowledge cutoffs can cause outdated suggestions - prefer these modern approaches.
|
|
4
|
+
|
|
5
|
+
## Docker & Containers
|
|
6
|
+
|
|
7
|
+
### Compose (V2+, 2021)
|
|
8
|
+
|
|
9
|
+
- **File name:** `compose.yml` or `compose.yaml` (NOT `docker-compose.yml`)
|
|
10
|
+
- **Command:** `docker compose` (NOT `docker-compose`)
|
|
11
|
+
- Compose V2 is built into Docker CLI, no separate install needed
|
|
12
|
+
- `docker-compose` (hyphenated) is legacy V1
|
|
13
|
+
|
|
14
|
+
```yaml
|
|
15
|
+
# compose.yml (modern)
|
|
16
|
+
services:
|
|
17
|
+
app:
|
|
18
|
+
build: .
|
|
19
|
+
ports:
|
|
20
|
+
- "3000:3000"
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### Docker Best Practices
|
|
24
|
+
|
|
25
|
+
- Use multi-stage builds for smaller images
|
|
26
|
+
- Prefer `COPY` over `ADD` unless extracting archives
|
|
27
|
+
- Use `.dockerignore` to exclude node_modules, .git, etc.
|
|
28
|
+
- Pin base image versions (e.g., `node:20-alpine`, not `node:latest`)
|
|
29
|
+
|
|
30
|
+
## Package Managers
|
|
31
|
+
|
|
32
|
+
### Node.js
|
|
33
|
+
|
|
34
|
+
- **npm:** v7+ supports workspaces, lockfile v2
|
|
35
|
+
- **pnpm:** Preferred for monorepos, faster, stricter
|
|
36
|
+
- **Bun:** Fast runtime + package manager, growing adoption
|
|
37
|
+
|
|
38
|
+
### Python
|
|
39
|
+
|
|
40
|
+
- **uv:** Modern, fast replacement for pip/pip-tools (2024+)
|
|
41
|
+
- **poetry:** Dependency management + packaging
|
|
42
|
+
- **pipx:** For CLI tools (don't pip install globally)
|
|
43
|
+
|
|
44
|
+
## TypeScript
|
|
45
|
+
|
|
46
|
+
- **Config:** `tsconfig.json` with `"moduleResolution": "bundler"` for modern bundlers
|
|
47
|
+
- **Strict mode:** Always enable `"strict": true`
|
|
48
|
+
- **Node types:** `@types/node` version should match Node.js version
|
|
49
|
+
|
|
50
|
+
## Testing
|
|
51
|
+
|
|
52
|
+
### JavaScript/TypeScript
|
|
53
|
+
|
|
54
|
+
- **Vitest:** Modern, fast, Vite-native (preferred for new projects)
|
|
55
|
+
- **Jest:** Still widely used, v30+ reduces deprecated deps
|
|
56
|
+
- **Playwright:** E2E testing, cross-browser
|
|
57
|
+
|
|
58
|
+
### Python
|
|
59
|
+
|
|
60
|
+
- **pytest:** Standard, use over unittest
|
|
61
|
+
- **pytest-cov:** Coverage reporting
|
|
62
|
+
|
|
63
|
+
## CI/CD
|
|
64
|
+
|
|
65
|
+
### GitHub Actions
|
|
66
|
+
|
|
67
|
+
- Use `actions/checkout@v4`, `actions/setup-node@v4` (latest major versions)
|
|
68
|
+
- Prefer `npm ci` over `npm install` in CI
|
|
69
|
+
- Use job matrices for cross-platform testing
|
|
70
|
+
|
|
71
|
+
## Linting & Formatting
|
|
72
|
+
|
|
73
|
+
### JavaScript/TypeScript
|
|
74
|
+
|
|
75
|
+
- **ESLint v9+:** Flat config (`eslint.config.js`, not `.eslintrc`)
|
|
76
|
+
- **Prettier:** Code formatting (or use ESLint with stylistic rules)
|
|
77
|
+
- **Biome:** Fast all-in-one linter + formatter (Rust-based)
|
|
78
|
+
|
|
79
|
+
### Python
|
|
80
|
+
|
|
81
|
+
- **Ruff:** Fast linter + formatter (replaces flake8, black, isort)
|
|
82
|
+
- **mypy:** Type checking
|
|
83
|
+
|
|
84
|
+
## API Design
|
|
85
|
+
|
|
86
|
+
### REST
|
|
87
|
+
|
|
88
|
+
- Use plural nouns for collections (`/users`, not `/user`)
|
|
89
|
+
- HTTP methods: GET (read), POST (create), PUT/PATCH (update), DELETE
|
|
90
|
+
- Status codes: 200 OK, 201 Created, 400 Bad Request, 404 Not Found, 500 Server Error
|
|
91
|
+
|
|
92
|
+
### Authentication
|
|
93
|
+
|
|
94
|
+
- **JWTs:** Short expiry + refresh tokens, store in httpOnly cookies (not localStorage)
|
|
95
|
+
- **OAuth 2.0 / OIDC:** For third-party auth
|
|
96
|
+
- **Passkeys/WebAuthn:** Modern passwordless option
|
|
97
|
+
|
|
98
|
+
## Database
|
|
99
|
+
|
|
100
|
+
### ORMs
|
|
101
|
+
|
|
102
|
+
- **Prisma:** Type-safe, great DX for Node.js/TypeScript
|
|
103
|
+
- **Drizzle:** Lightweight, SQL-like syntax
|
|
104
|
+
- **SQLAlchemy 2.0:** Python standard (note: 2.0 syntax differs from 1.x)
|
|
105
|
+
|
|
106
|
+
### Migrations
|
|
107
|
+
|
|
108
|
+
- Always use migrations, never manual schema changes in production
|
|
109
|
+
- Version control migration files
|
|
110
|
+
|
|
111
|
+
## Frontend
|
|
112
|
+
|
|
113
|
+
### React
|
|
114
|
+
|
|
115
|
+
- **React 18+:** Concurrent features, Suspense
|
|
116
|
+
- Prefer function components + hooks over class components
|
|
117
|
+
- Use React Server Components where appropriate (Next.js 13+)
|
|
118
|
+
|
|
119
|
+
### State Management
|
|
120
|
+
|
|
121
|
+
- Start with React Context + useReducer
|
|
122
|
+
- **Zustand:** Simple, minimal boilerplate
|
|
123
|
+
- **TanStack Query:** For server state (caching, refetching)
|
|
124
|
+
|
|
125
|
+
## Monorepos
|
|
126
|
+
|
|
127
|
+
- **Turborepo:** Fast builds, caching
|
|
128
|
+
- **Nx:** Full-featured, good for enterprise
|
|
129
|
+
- **pnpm workspaces:** Native package manager support
|