agentic-forge 0.0.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/.gitattributes +24 -0
- package/.github/workflows/ci.yml +70 -0
- package/.markdownlint-cli2.jsonc +16 -0
- package/.prettierignore +3 -0
- package/.prettierrc +6 -0
- package/.vscode/agentic-forge.code-workspace +26 -0
- package/CHANGELOG.md +100 -0
- package/CLAUDE.md +158 -0
- package/CONTRIBUTING.md +152 -0
- package/LICENSE +21 -0
- package/README.md +145 -0
- package/agentic-forge-banner.png +0 -0
- package/biome.json +21 -0
- package/package.json +5 -0
- package/scripts/copy-assets.js +21 -0
- package/src/agents/explorer.md +97 -0
- package/src/agents/reviewer.md +137 -0
- package/src/checkpoints/manager.ts +119 -0
- package/src/claude/.claude/skills/analyze/SKILL.md +241 -0
- package/src/claude/.claude/skills/analyze/references/bug.md +62 -0
- package/src/claude/.claude/skills/analyze/references/debt.md +76 -0
- package/src/claude/.claude/skills/analyze/references/doc.md +67 -0
- package/src/claude/.claude/skills/analyze/references/security.md +76 -0
- package/src/claude/.claude/skills/analyze/references/style.md +72 -0
- package/src/claude/.claude/skills/create-checkpoint/SKILL.md +88 -0
- package/src/claude/.claude/skills/create-log/SKILL.md +75 -0
- package/src/claude/.claude/skills/fix-analyze/SKILL.md +102 -0
- package/src/claude/.claude/skills/git-branch/SKILL.md +71 -0
- package/src/claude/.claude/skills/git-commit/SKILL.md +107 -0
- package/src/claude/.claude/skills/git-pr/SKILL.md +96 -0
- package/src/claude/.claude/skills/orchestrate/SKILL.md +120 -0
- package/src/claude/.claude/skills/sdlc-plan/SKILL.md +163 -0
- package/src/claude/.claude/skills/sdlc-plan/references/bug.md +115 -0
- package/src/claude/.claude/skills/sdlc-plan/references/chore.md +105 -0
- package/src/claude/.claude/skills/sdlc-plan/references/feature.md +130 -0
- package/src/claude/.claude/skills/sdlc-review/SKILL.md +215 -0
- package/src/claude/.claude/skills/workflow-builder/SKILL.md +185 -0
- package/src/claude/.claude/skills/workflow-builder/references/REFERENCE.md +487 -0
- package/src/claude/.claude/skills/workflow-builder/references/workflow-example.yaml +427 -0
- package/src/cli.ts +182 -0
- package/src/commands/config-cmd.ts +28 -0
- package/src/commands/index.ts +21 -0
- package/src/commands/init.ts +96 -0
- package/src/commands/release-notes.ts +85 -0
- package/src/commands/resume.ts +103 -0
- package/src/commands/run.ts +234 -0
- package/src/commands/shortcuts.ts +11 -0
- package/src/commands/skills-dir.ts +11 -0
- package/src/commands/status.ts +112 -0
- package/src/commands/update.ts +64 -0
- package/src/commands/version.ts +27 -0
- package/src/commands/workflows.ts +129 -0
- package/src/config.ts +129 -0
- package/src/console.ts +790 -0
- package/src/executor.ts +354 -0
- package/src/git/worktree.ts +236 -0
- package/src/logging/logger.ts +95 -0
- package/src/orchestrator.ts +815 -0
- package/src/parser.ts +225 -0
- package/src/progress.ts +306 -0
- package/src/prompts/agentic-system.md +31 -0
- package/src/ralph-loop.ts +260 -0
- package/src/renderer.ts +164 -0
- package/src/runner.ts +634 -0
- package/src/signal-manager.ts +55 -0
- package/src/steps/base.ts +71 -0
- package/src/steps/conditional-step.ts +144 -0
- package/src/steps/index.ts +15 -0
- package/src/steps/parallel-step.ts +213 -0
- package/src/steps/prompt-step.ts +121 -0
- package/src/steps/ralph-loop-step.ts +186 -0
- package/src/steps/serial-step.ts +84 -0
- package/src/templates/analysis/bug.md.j2 +35 -0
- package/src/templates/analysis/debt.md.j2 +38 -0
- package/src/templates/analysis/doc.md.j2 +45 -0
- package/src/templates/analysis/security.md.j2 +35 -0
- package/src/templates/analysis/style.md.j2 +44 -0
- package/src/templates/analysis-summary.md.j2 +58 -0
- package/src/templates/checkpoint.md.j2 +27 -0
- package/src/templates/implementation-report.md.j2 +81 -0
- package/src/templates/memory.md.j2 +16 -0
- package/src/templates/plan-bug.md.j2 +42 -0
- package/src/templates/plan-chore.md.j2 +27 -0
- package/src/templates/plan-feature.md.j2 +41 -0
- package/src/templates/progress.json.j2 +16 -0
- package/src/templates/ralph-report.md.j2 +45 -0
- package/src/types.ts +141 -0
- package/src/workflows/analyze-codebase-merge.yaml +328 -0
- package/src/workflows/analyze-codebase.yaml +196 -0
- package/src/workflows/analyze-single.yaml +56 -0
- package/src/workflows/demo.yaml +180 -0
- package/src/workflows/one-shot.yaml +54 -0
- package/src/workflows/plan-build-review.yaml +160 -0
- package/src/workflows/ralph-loop.yaml +73 -0
- package/tests/config.test.ts +219 -0
- package/tests/console.test.ts +506 -0
- package/tests/executor.test.ts +339 -0
- package/tests/init.test.ts +86 -0
- package/tests/logger.test.ts +110 -0
- package/tests/parser.test.ts +290 -0
- package/tests/progress.test.ts +345 -0
- package/tests/ralph-loop.test.ts +418 -0
- package/tests/renderer.test.ts +350 -0
- package/tests/runner.test.ts +497 -0
- package/tests/setup.test.ts +7 -0
- package/tests/signal-manager.test.ts +26 -0
- package/tests/steps.test.ts +412 -0
- package/tests/worktree.test.ts +411 -0
- package/tsconfig.json +18 -0
- package/vitest.config.ts +8 -0
package/.gitattributes
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Enforce LF line endings for all text files
|
|
2
|
+
* text=auto eol=lf
|
|
3
|
+
|
|
4
|
+
# Explicitly set common file types
|
|
5
|
+
*.md text eol=lf
|
|
6
|
+
*.txt text eol=lf
|
|
7
|
+
*.json text eol=lf
|
|
8
|
+
*.yaml text eol=lf
|
|
9
|
+
*.yml text eol=lf
|
|
10
|
+
*.toml text eol=lf
|
|
11
|
+
*.sh text eol=lf
|
|
12
|
+
*.js text eol=lf
|
|
13
|
+
*.ts text eol=lf
|
|
14
|
+
*.html text eol=lf
|
|
15
|
+
*.css text eol=lf
|
|
16
|
+
*.xml text eol=lf
|
|
17
|
+
|
|
18
|
+
# Keep binary files as-is
|
|
19
|
+
*.png binary
|
|
20
|
+
*.jpg binary
|
|
21
|
+
*.jpeg binary
|
|
22
|
+
*.gif binary
|
|
23
|
+
*.ico binary
|
|
24
|
+
*.pdf binary
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
branches: [main]
|
|
6
|
+
|
|
7
|
+
concurrency:
|
|
8
|
+
group: ci-${{ github.event.pull_request.number }}
|
|
9
|
+
cancel-in-progress: true
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
lint-and-format:
|
|
13
|
+
name: Lint & Format
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
permissions:
|
|
16
|
+
contents: read
|
|
17
|
+
|
|
18
|
+
steps:
|
|
19
|
+
- name: Checkout repository
|
|
20
|
+
uses: actions/checkout@v4
|
|
21
|
+
|
|
22
|
+
- name: Setup Node.js
|
|
23
|
+
uses: actions/setup-node@v4
|
|
24
|
+
with:
|
|
25
|
+
node-version: "20"
|
|
26
|
+
|
|
27
|
+
- name: Setup pnpm
|
|
28
|
+
uses: pnpm/action-setup@v4
|
|
29
|
+
with:
|
|
30
|
+
version: 9
|
|
31
|
+
|
|
32
|
+
- name: Install dependencies
|
|
33
|
+
run: pnpm install --frozen-lockfile
|
|
34
|
+
|
|
35
|
+
- name: Lint and format check
|
|
36
|
+
run: pnpm check
|
|
37
|
+
|
|
38
|
+
test:
|
|
39
|
+
name: Tests (Node ${{ matrix.node-version }}, ${{ matrix.os }})
|
|
40
|
+
runs-on: ${{ matrix.os }}
|
|
41
|
+
permissions:
|
|
42
|
+
contents: read
|
|
43
|
+
strategy:
|
|
44
|
+
matrix:
|
|
45
|
+
os: [ubuntu-latest, windows-latest]
|
|
46
|
+
node-version: ["20", "22"]
|
|
47
|
+
fail-fast: false
|
|
48
|
+
|
|
49
|
+
steps:
|
|
50
|
+
- name: Checkout repository
|
|
51
|
+
uses: actions/checkout@v4
|
|
52
|
+
|
|
53
|
+
- name: Setup Node.js ${{ matrix.node-version }}
|
|
54
|
+
uses: actions/setup-node@v4
|
|
55
|
+
with:
|
|
56
|
+
node-version: ${{ matrix.node-version }}
|
|
57
|
+
|
|
58
|
+
- name: Setup pnpm
|
|
59
|
+
uses: pnpm/action-setup@v4
|
|
60
|
+
with:
|
|
61
|
+
version: 9
|
|
62
|
+
|
|
63
|
+
- name: Install dependencies
|
|
64
|
+
run: pnpm install --frozen-lockfile
|
|
65
|
+
|
|
66
|
+
- name: Build
|
|
67
|
+
run: pnpm build
|
|
68
|
+
|
|
69
|
+
- name: Run tests with coverage
|
|
70
|
+
run: pnpm test -- --coverage
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"config": {
|
|
3
|
+
"default": true,
|
|
4
|
+
"MD013": false, // Line length
|
|
5
|
+
"MD024": {
|
|
6
|
+
"siblings_only": true // Multiple headings with the same content
|
|
7
|
+
},
|
|
8
|
+
"MD025": {
|
|
9
|
+
"front_matter_title": "" // Don't treat frontmatter title as an h1
|
|
10
|
+
},
|
|
11
|
+
"MD033": false, // Inline HTML (used in README badges/layout)
|
|
12
|
+
"MD041": false // First line heading (not applicable to all .md files)
|
|
13
|
+
},
|
|
14
|
+
"globs": ["**/*.md"],
|
|
15
|
+
"ignores": ["agentic", "**/node_modules", ".git", "dist", "build"]
|
|
16
|
+
}
|
package/.prettierignore
ADDED
package/.prettierrc
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"folders": [
|
|
3
|
+
{
|
|
4
|
+
"path": ".."
|
|
5
|
+
}
|
|
6
|
+
],
|
|
7
|
+
"settings": {
|
|
8
|
+
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
|
9
|
+
"editor.formatOnSave": true,
|
|
10
|
+
"editor.wordWrap": "on",
|
|
11
|
+
"files.exclude": {
|
|
12
|
+
"**/.git": true
|
|
13
|
+
},
|
|
14
|
+
"search.exclude": {
|
|
15
|
+
"**/.git": true
|
|
16
|
+
},
|
|
17
|
+
"markdownlint.run": "onSave",
|
|
18
|
+
"prettier.resolveGlobalModules": false
|
|
19
|
+
},
|
|
20
|
+
"extensions": {
|
|
21
|
+
"recommendations": [
|
|
22
|
+
"esbenp.prettier-vscode",
|
|
23
|
+
"davidanson.vscode-markdownlint"
|
|
24
|
+
]
|
|
25
|
+
}
|
|
26
|
+
}
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.7.0 - 2026-04-04
|
|
4
|
+
|
|
5
|
+
- **Breaking:** Full rewrite from Python to TypeScript/Node.js
|
|
6
|
+
- **Breaking:** Renamed package from `agentic-sdlc` to `agentic-forge` (CLI command also renamed)
|
|
7
|
+
- **Breaking:** Removed Claude Code marketplace dependency; skills now loaded via `--add-dir`
|
|
8
|
+
- **Breaking:** Replaced Jinja2 templates with Nunjucks for template rendering
|
|
9
|
+
- **Breaking:** Distribution changed from PyPI (`uv tool install`) to npm (`npm i -g agentic-forge`)
|
|
10
|
+
- Ported all 14 CLI command handlers to TypeScript with Commander.js
|
|
11
|
+
- Ported workflow executor, orchestrator, and checkpoint manager to TypeScript
|
|
12
|
+
- Ported all step executors (prompt, serial, parallel, conditional, ralph-loop) with shared base class
|
|
13
|
+
- Ported runner module with Claude CLI subprocess management and stream-JSON parsing
|
|
14
|
+
- Ported progress tracking, signal management, and workflow logger
|
|
15
|
+
- Ported parallel step executor with git worktree management
|
|
16
|
+
- Added `skills-dir` command to print bundled skills path for `--add-dir` integration
|
|
17
|
+
- Skills, agents, and prompts bundled as npm package data
|
|
18
|
+
- Repository restructured: flat layout at root instead of `plugins/agentic-sdlc/`
|
|
19
|
+
- Added Biome for TypeScript/JSON linting and formatting
|
|
20
|
+
- Added markdownlint-cli2 for Markdown linting
|
|
21
|
+
- Added Vitest test suite
|
|
22
|
+
- CI updated from Python (pytest, uv) to Node.js (pnpm, vitest, biome)
|
|
23
|
+
- Fixed wait-for-human progress state and parallel concurrency cap
|
|
24
|
+
- Fixed 5 major correctness issues from code review
|
|
25
|
+
|
|
26
|
+
## 0.6.0 - 2026-02-15
|
|
27
|
+
|
|
28
|
+
- Added `workflow-builder` skill for creating, updating, explaining, validating, and debugging workflows
|
|
29
|
+
- Added parallel branch display in terminal with multi-branch status updates (BASE mode)
|
|
30
|
+
- Added queue-based message streaming for parallel steps (ALL mode)
|
|
31
|
+
- Added stream-JSON parsing for real-time Claude output processing
|
|
32
|
+
- Added model name detection and display in step headers (e.g., `sonnet-4.5`)
|
|
33
|
+
- Added `strict-mode` setting for failing on undefined template variables
|
|
34
|
+
- Added config file copy during `init` command
|
|
35
|
+
- Added comprehensive test coverage for console, runner, init, parser, and step modules
|
|
36
|
+
- Rewrote console output module with `ParallelOutputHandler` for parallel execution display
|
|
37
|
+
- Increased default `max_iterations` from 5-10 to 25 across all workflows
|
|
38
|
+
- Changed `create_pr` default to `false` across all workflows
|
|
39
|
+
- Changed `bypass-permissions` default to `false` in ralph-loop workflow
|
|
40
|
+
- Set `terminal-output: base` as explicit default in plan-build-review and ralph-loop workflows
|
|
41
|
+
- Consolidated workflow documentation from `docs/` into `workflow-builder` skill references
|
|
42
|
+
- Fixed workflow resume losing state on re-run
|
|
43
|
+
- Fixed fix-issues step in plan-build-review reading wrong file for review output
|
|
44
|
+
- Fixed JSON template placeholders in fix-issues step replaced with proper syntax
|
|
45
|
+
|
|
46
|
+
## 0.5.0 - 2026-01-25
|
|
47
|
+
|
|
48
|
+
- Converted all CLI commands to skills for consistency and reusability
|
|
49
|
+
- Added `create-skill` skill for generating new skills from templates
|
|
50
|
+
- Renamed `validate` command to `sdlc-review` skill
|
|
51
|
+
- Prefixed plan and review skills with `sdlc-` to avoid naming conflicts with Claude Code built-ins
|
|
52
|
+
- Added workflow-id argument support across skills
|
|
53
|
+
- Fixed step output and reference handling between workflow steps
|
|
54
|
+
- Fixed full skill name usage in workflows to avoid command conflicts
|
|
55
|
+
|
|
56
|
+
## 0.4.0 - 2026-01-25
|
|
57
|
+
|
|
58
|
+
- Added `fix-analysis` skill for iteratively fixing issues from analysis documents
|
|
59
|
+
- Added `workflows` CLI command to list available workflows with descriptions
|
|
60
|
+
- Removed `/build`, `one-shot`, and `analyze` CLI commands in favor of workflow-based execution
|
|
61
|
+
- Refactored analyze workflows to use the new `fix-analysis` skill
|
|
62
|
+
- Removed experimental-plugins directory
|
|
63
|
+
- Fixed `git-pr` command to fetch and compare against remote base branch to avoid stale local branch issues
|
|
64
|
+
|
|
65
|
+
## 0.3.0 - 2026-01-24
|
|
66
|
+
|
|
67
|
+
- Standardized US English spelling across all code, commands, and documentation (e.g., `analyse` to `analyze`)
|
|
68
|
+
- Renamed workflow files from `analyse-*.yaml` to `analyze-*.yaml` and `demo-workflow.yaml` to `demo.yaml`
|
|
69
|
+
- Removed interactive-sdlc plugin
|
|
70
|
+
|
|
71
|
+
## 0.2.0 - 2026-01-21
|
|
72
|
+
|
|
73
|
+
- Added `version` command to display installed version
|
|
74
|
+
- Added `release-notes` command to display release notes from CHANGELOG.md
|
|
75
|
+
- Added `update` command for self-updating from local marketplace
|
|
76
|
+
- Added `add-improvement` command for tracking improvement suggestions
|
|
77
|
+
- Added workflow auto-discovery with search order: project-local, user-global, bundled
|
|
78
|
+
- Added `--list` flag for `run` command to list all available workflows
|
|
79
|
+
- Added demo workflow for showcasing capabilities
|
|
80
|
+
- Fixed `list` command to correctly find workflow progress files in `agentic/outputs/`
|
|
81
|
+
- Fixed workflow logging to capture agent messages in both base and terminal-output modes
|
|
82
|
+
- Fixed ralph-loop first iteration template evaluation
|
|
83
|
+
- Fixed plan output when used in workflow context
|
|
84
|
+
- Fixed plan-build-validate build step failures and ralph failure handling
|
|
85
|
+
|
|
86
|
+
## 0.1.0 - 2026-01-20
|
|
87
|
+
|
|
88
|
+
- Initial release of agentic-sdlc
|
|
89
|
+
- YAML-based workflow orchestration with sequential, parallel, and Ralph loop step types
|
|
90
|
+
- Checkpoint manager for session state tracking
|
|
91
|
+
- Python CLI for workflow management (`run`, `init`)
|
|
92
|
+
- Core commands: plan, build, validate, analyze, orchestrate
|
|
93
|
+
- Git commands: git-branch, git-commit, git-pr
|
|
94
|
+
- Explorer and reviewer agents for specialized tasks
|
|
95
|
+
- Jinja2 templates for plans, reports, and analysis outputs
|
|
96
|
+
- Git worktree support for parallel step execution
|
|
97
|
+
- Console output module for workflow progress display
|
|
98
|
+
- Plugin discovery and download system with marketplace structure
|
|
99
|
+
- Claude GitHub Actions for CI
|
|
100
|
+
- NuGet vulnerability detection and security analysis commands
|
package/CLAUDE.md
ADDED
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# Claude Context: agentic-forge Repository
|
|
2
|
+
|
|
3
|
+
## Project Overview
|
|
4
|
+
|
|
5
|
+
Agentic Forge is a TypeScript/Node.js package that provides YAML-based workflow orchestration for Claude Code. It bundles skills, agents, and prompts as package data, enabling autonomous multi-step task execution.
|
|
6
|
+
|
|
7
|
+
## Purpose
|
|
8
|
+
|
|
9
|
+
The agentic-forge repository aims to:
|
|
10
|
+
|
|
11
|
+
1. **Share Best Practices**: Provide battle-tested automation patterns and workflows
|
|
12
|
+
2. **Accelerate Development**: Offer ready-to-use components that solve common problems
|
|
13
|
+
3. **Automate Development**: Offer reusable and flexible workflows that enable the automation of development tasks during the whole SDLC life-cycle
|
|
14
|
+
|
|
15
|
+
## Repository Structure
|
|
16
|
+
|
|
17
|
+
### `src/`
|
|
18
|
+
|
|
19
|
+
TypeScript source code for the CLI and workflow orchestration engine.
|
|
20
|
+
|
|
21
|
+
#### `agents/`
|
|
22
|
+
|
|
23
|
+
Bundled sub-agent configurations for specialized, autonomous task execution (`explorer.md`, `reviewer.md`). Agents should be self-contained and focused on a specific domain or task.
|
|
24
|
+
|
|
25
|
+
#### `claude/.claude/skills/`
|
|
26
|
+
|
|
27
|
+
Bundled skills loaded via `--add-dir`. Skills are reusable Claude Code slash commands. Each skill is a directory in kebab-case containing a `SKILL.md` file.
|
|
28
|
+
|
|
29
|
+
#### `commands/`
|
|
30
|
+
|
|
31
|
+
CLI command implementations (`run`, `init`, `update`, `skills-dir`, `workflows`, etc.).
|
|
32
|
+
|
|
33
|
+
#### `prompts/`
|
|
34
|
+
|
|
35
|
+
System prompt templates used by the workflow runner.
|
|
36
|
+
|
|
37
|
+
#### `steps/`
|
|
38
|
+
|
|
39
|
+
Workflow step handlers (prompt, parallel, serial, conditional, ralph-loop).
|
|
40
|
+
|
|
41
|
+
#### `workflows/`
|
|
42
|
+
|
|
43
|
+
Bundled YAML workflow definitions (7 workflows: `plan-build-review`, `one-shot`, `ralph-loop`, `analyze-codebase`, `analyze-codebase-merge`, `analyze-single`, `demo`).
|
|
44
|
+
|
|
45
|
+
### `tests/`
|
|
46
|
+
|
|
47
|
+
Vitest test suite for all TypeScript source code.
|
|
48
|
+
|
|
49
|
+
### `agentic/`
|
|
50
|
+
|
|
51
|
+
Runtime directory for workflow configuration, outputs, and logs.
|
|
52
|
+
|
|
53
|
+
## Development Guidelines
|
|
54
|
+
|
|
55
|
+
### Language Style
|
|
56
|
+
|
|
57
|
+
Use US English spelling in all code, comments, documentation, and UI strings when a word has both UK and US variants (e.g., "analyze" not "analyse", "color" not "colour", "canceled" not "cancelled").
|
|
58
|
+
|
|
59
|
+
### Naming Conventions
|
|
60
|
+
|
|
61
|
+
- **Agents**: Use descriptive names with domain prefix (e.g., `explorer.md`, `reviewer.md`)
|
|
62
|
+
- **Skills**: Directory name in kebab-case with `SKILL.md` inside (e.g., `analyze/SKILL.md`, `git-commit/SKILL.md`)
|
|
63
|
+
- **Workflows**: Descriptive kebab-case YAML files (e.g., `plan-build-review.yaml`)
|
|
64
|
+
|
|
65
|
+
### Documentation Guidelines
|
|
66
|
+
|
|
67
|
+
- **Character encoding**: Code files must use ASCII only. Documentation and markdown files (skills, agents, READMEs) may use minimal emojis where they add clarity (e.g., checkmarks, robot emoji for Claude attribution). Avoid decorative emoji use.
|
|
68
|
+
- **Workflow diagrams**: Use arrow notation (`->`) for workflow documentation instead of long multi-line ASCII boxes. Example: `Plan -> Implement -> Review -> Output` is preferred over complex box diagrams
|
|
69
|
+
|
|
70
|
+
### File Formats
|
|
71
|
+
|
|
72
|
+
- **Agents**: Markdown (`.md`) files in `src/agents/`
|
|
73
|
+
- **Skills**: `SKILL.md` files in skill directories: `src/claude/.claude/skills/<skill-name>/SKILL.md`
|
|
74
|
+
- **Workflows**: YAML files in `src/workflows/`
|
|
75
|
+
- **TypeScript Source**: TypeScript modules in `src/` with root `package.json`
|
|
76
|
+
|
|
77
|
+
**Placeholder Convention:**
|
|
78
|
+
|
|
79
|
+
Prompt templates use **Mustache/Handlebars-style placeholders** with the following format:
|
|
80
|
+
|
|
81
|
+
```markdown
|
|
82
|
+
## {{section_title}}
|
|
83
|
+
|
|
84
|
+
{{content}}
|
|
85
|
+
|
|
86
|
+
<!--
|
|
87
|
+
Instructions:
|
|
88
|
+
- Replace {{content}} with the actual content
|
|
89
|
+
- Additional guidance for this section
|
|
90
|
+
- Suggested elements (include others as needed):
|
|
91
|
+
- Element 1
|
|
92
|
+
- Element 2
|
|
93
|
+
-->
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**Key principles:**
|
|
97
|
+
|
|
98
|
+
- Use `{{variable_name}}` for all placeholders (not `<placeholder>` or other formats)
|
|
99
|
+
- Include HTML comments with instructions below each section
|
|
100
|
+
- Mark suggested elements as "include others as needed" to allow flexibility
|
|
101
|
+
- Required sections must be present; optional sections can be omitted
|
|
102
|
+
- Section names must match the template exactly (case-sensitive)
|
|
103
|
+
|
|
104
|
+
**Validation:**
|
|
105
|
+
|
|
106
|
+
Use the `/normalize` command to validate prompt files against templates:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
# Validate all prompts in the repository
|
|
110
|
+
/normalize
|
|
111
|
+
|
|
112
|
+
# Validate specific files or directories
|
|
113
|
+
/normalize src/claude/.claude/skills/
|
|
114
|
+
|
|
115
|
+
# Auto-fix non-compliant files
|
|
116
|
+
/normalize --autofix src/claude/.claude/skills/
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Shell Commands
|
|
120
|
+
|
|
121
|
+
Run shell commands directly without prefixing with `cd` to the repository root. The working directory is already set correctly, and unnecessary `cd` prefixes create distinct command strings that trigger extra permission prompts.
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
# Good
|
|
125
|
+
git status
|
|
126
|
+
pnpm test
|
|
127
|
+
|
|
128
|
+
# Bad - unnecessary cd causes extra permission approval
|
|
129
|
+
cd "c:/Repositories/agentic-forge" && git status
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Code Style and Formatting
|
|
133
|
+
|
|
134
|
+
CI validates format, lint, and tests on all pull requests. Run locally before opening a pull request:
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
pnpm check # Format and lint (biome)
|
|
138
|
+
pnpm test # Vitest tests
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## Technical Considerations
|
|
142
|
+
|
|
143
|
+
### Workflow Engine Changes
|
|
144
|
+
|
|
145
|
+
When modifying the workflow engine in `src/`, you must update the workflow-builder skill reference files to keep them in sync:
|
|
146
|
+
|
|
147
|
+
- `src/claude/.claude/skills/workflow-builder/references/REFERENCE.md` - Complete schema reference
|
|
148
|
+
- `src/claude/.claude/skills/workflow-builder/references/workflow-example.yaml` - Annotated reference workflow
|
|
149
|
+
|
|
150
|
+
Changes to workflow settings, step types, or features require updates to both files.
|
|
151
|
+
|
|
152
|
+
### Node.js Development
|
|
153
|
+
|
|
154
|
+
- **Always use `pnpm` for package management**: This repository uses pnpm for all Node.js operations
|
|
155
|
+
- **Building**: Use `pnpm build` (runs `tsc` + asset copy script)
|
|
156
|
+
- **Testing**: Use `pnpm test` (runs Vitest)
|
|
157
|
+
- **Linting**: Use `pnpm check` (runs Biome)
|
|
158
|
+
- **Development**: Use `pnpm dev` for TypeScript watch mode
|
package/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# Contributing to Agentic Forge
|
|
2
|
+
|
|
3
|
+
Thank you for your interest in contributing! This guide will help you get started.
|
|
4
|
+
|
|
5
|
+
## Ways to Contribute
|
|
6
|
+
|
|
7
|
+
- **Report bugs** - Found something broken? [Open an issue](https://github.com/e-stpierre/agentic-forge/issues)
|
|
8
|
+
- **Suggest features** - Have an idea for a new workflow or enhancement? [Let us know](https://github.com/e-stpierre/agentic-forge/issues)
|
|
9
|
+
- **Improve docs** - Fix typos, clarify explanations, add examples
|
|
10
|
+
- **Write code** - Bug fixes, new skills, improvements to existing ones
|
|
11
|
+
|
|
12
|
+
## Development Setup
|
|
13
|
+
|
|
14
|
+
### Prerequisites
|
|
15
|
+
|
|
16
|
+
- [Claude Code](https://claude.ai/code) installed
|
|
17
|
+
- Git
|
|
18
|
+
- Node.js 20+
|
|
19
|
+
- [pnpm](https://pnpm.io/) for package management
|
|
20
|
+
|
|
21
|
+
### Local Development
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# Clone the repo
|
|
25
|
+
git clone https://github.com/e-stpierre/agentic-forge.git
|
|
26
|
+
cd agentic-forge
|
|
27
|
+
|
|
28
|
+
# Install dependencies
|
|
29
|
+
pnpm install
|
|
30
|
+
|
|
31
|
+
# Build
|
|
32
|
+
pnpm build
|
|
33
|
+
|
|
34
|
+
# Run tests
|
|
35
|
+
pnpm test
|
|
36
|
+
|
|
37
|
+
# Run format and lint checks
|
|
38
|
+
pnpm check
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Making Changes
|
|
42
|
+
|
|
43
|
+
### Branch Naming
|
|
44
|
+
|
|
45
|
+
- `feature/description` - New features
|
|
46
|
+
- `fix/description` - Bug fixes
|
|
47
|
+
- `doc/description` - Documentation updates
|
|
48
|
+
- `refactor/description` - Refactoring
|
|
49
|
+
|
|
50
|
+
### Commit Messages
|
|
51
|
+
|
|
52
|
+
Write clear, concise commit messages that describe the change. For example: `Add retry logic to workflow executor` or `Fix validation error in analyze skill`.
|
|
53
|
+
|
|
54
|
+
### Code Formatting
|
|
55
|
+
|
|
56
|
+
Run format, lint, and test checks locally before submitting a PR:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
pnpm check # Format and lint (Biome)
|
|
60
|
+
pnpm test # Vitest tests
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Internal Tools
|
|
64
|
+
|
|
65
|
+
- **`/normalize`** - Validate prompt files and READMEs against templates. Use `--autofix` to auto-fix issues.
|
|
66
|
+
|
|
67
|
+
## Project Structure
|
|
68
|
+
|
|
69
|
+
```text
|
|
70
|
+
src/
|
|
71
|
+
agents/ # Sub-agent definitions (.md)
|
|
72
|
+
claude/.claude/ # Skills loaded via --add-dir
|
|
73
|
+
skills/ # Bundled skills (slash commands)
|
|
74
|
+
commands/ # CLI command implementations
|
|
75
|
+
prompts/ # System prompt templates
|
|
76
|
+
steps/ # Workflow step handlers
|
|
77
|
+
workflows/ # YAML workflow definitions
|
|
78
|
+
*.ts # Core TypeScript modules
|
|
79
|
+
tests/ # Vitest test suite
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Naming Conventions
|
|
83
|
+
|
|
84
|
+
- **Agents**: descriptive with domain prefix (`explorer.md`, `reviewer.md`)
|
|
85
|
+
- **Skills**: directory name in kebab-case with `SKILL.md` inside (`analyze/SKILL.md`, `git-commit/SKILL.md`)
|
|
86
|
+
- **Workflows**: descriptive kebab-case YAML files (`plan-build-review.yaml`)
|
|
87
|
+
|
|
88
|
+
### Prompt Templates
|
|
89
|
+
|
|
90
|
+
All prompts must follow the templates in the repository. Use the `/normalize` command inside Claude Code to validate.
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
# Validate all prompts
|
|
94
|
+
/normalize
|
|
95
|
+
|
|
96
|
+
# Validate specific files
|
|
97
|
+
/normalize src/claude/.claude/skills/my-skill/
|
|
98
|
+
|
|
99
|
+
# Auto-fix non-compliant files
|
|
100
|
+
/normalize --autofix src/claude/.claude/skills/
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Pull Request Process
|
|
104
|
+
|
|
105
|
+
### Workflow
|
|
106
|
+
|
|
107
|
+
1. Fork the repository
|
|
108
|
+
2. Create a feature branch (`git checkout -b feature/my-feature`)
|
|
109
|
+
3. Make your changes
|
|
110
|
+
4. Run `pnpm check` to verify formatting
|
|
111
|
+
5. Run `pnpm test` to run the test suite
|
|
112
|
+
6. Run `/normalize` (inside Claude Code) to validate prompt files
|
|
113
|
+
7. Commit your changes with clear messages
|
|
114
|
+
8. Push to your fork
|
|
115
|
+
9. Open a pull request
|
|
116
|
+
|
|
117
|
+
### PR Checklist
|
|
118
|
+
|
|
119
|
+
- [ ] CI pipeline passes (format, lint, tests)
|
|
120
|
+
- [ ] Prompt templates validated (`/normalize`)
|
|
121
|
+
- [ ] CHANGELOG updated if applicable
|
|
122
|
+
- [ ] Changes tested with Claude Code
|
|
123
|
+
|
|
124
|
+
## Reporting Issues
|
|
125
|
+
|
|
126
|
+
### Bug Reports
|
|
127
|
+
|
|
128
|
+
Include:
|
|
129
|
+
|
|
130
|
+
- Steps to reproduce
|
|
131
|
+
- Expected vs actual behavior
|
|
132
|
+
- Agentic Forge version
|
|
133
|
+
- Claude Code version
|
|
134
|
+
|
|
135
|
+
### Feature Requests
|
|
136
|
+
|
|
137
|
+
Include:
|
|
138
|
+
|
|
139
|
+
- Description of the feature
|
|
140
|
+
- Use case / motivation
|
|
141
|
+
|
|
142
|
+
## Code of Conduct
|
|
143
|
+
|
|
144
|
+
Be respectful and constructive. We're all here to build useful tools together.
|
|
145
|
+
|
|
146
|
+
## Questions?
|
|
147
|
+
|
|
148
|
+
[Open an issue](https://github.com/e-stpierre/agentic-forge/issues) with the `question` label.
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
Thank you for contributing to Agentic Forge!
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025-2026 Étienne St-Pierre
|
|
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.
|