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.
Files changed (110) hide show
  1. package/.gitattributes +24 -0
  2. package/.github/workflows/ci.yml +70 -0
  3. package/.markdownlint-cli2.jsonc +16 -0
  4. package/.prettierignore +3 -0
  5. package/.prettierrc +6 -0
  6. package/.vscode/agentic-forge.code-workspace +26 -0
  7. package/CHANGELOG.md +100 -0
  8. package/CLAUDE.md +158 -0
  9. package/CONTRIBUTING.md +152 -0
  10. package/LICENSE +21 -0
  11. package/README.md +145 -0
  12. package/agentic-forge-banner.png +0 -0
  13. package/biome.json +21 -0
  14. package/package.json +5 -0
  15. package/scripts/copy-assets.js +21 -0
  16. package/src/agents/explorer.md +97 -0
  17. package/src/agents/reviewer.md +137 -0
  18. package/src/checkpoints/manager.ts +119 -0
  19. package/src/claude/.claude/skills/analyze/SKILL.md +241 -0
  20. package/src/claude/.claude/skills/analyze/references/bug.md +62 -0
  21. package/src/claude/.claude/skills/analyze/references/debt.md +76 -0
  22. package/src/claude/.claude/skills/analyze/references/doc.md +67 -0
  23. package/src/claude/.claude/skills/analyze/references/security.md +76 -0
  24. package/src/claude/.claude/skills/analyze/references/style.md +72 -0
  25. package/src/claude/.claude/skills/create-checkpoint/SKILL.md +88 -0
  26. package/src/claude/.claude/skills/create-log/SKILL.md +75 -0
  27. package/src/claude/.claude/skills/fix-analyze/SKILL.md +102 -0
  28. package/src/claude/.claude/skills/git-branch/SKILL.md +71 -0
  29. package/src/claude/.claude/skills/git-commit/SKILL.md +107 -0
  30. package/src/claude/.claude/skills/git-pr/SKILL.md +96 -0
  31. package/src/claude/.claude/skills/orchestrate/SKILL.md +120 -0
  32. package/src/claude/.claude/skills/sdlc-plan/SKILL.md +163 -0
  33. package/src/claude/.claude/skills/sdlc-plan/references/bug.md +115 -0
  34. package/src/claude/.claude/skills/sdlc-plan/references/chore.md +105 -0
  35. package/src/claude/.claude/skills/sdlc-plan/references/feature.md +130 -0
  36. package/src/claude/.claude/skills/sdlc-review/SKILL.md +215 -0
  37. package/src/claude/.claude/skills/workflow-builder/SKILL.md +185 -0
  38. package/src/claude/.claude/skills/workflow-builder/references/REFERENCE.md +487 -0
  39. package/src/claude/.claude/skills/workflow-builder/references/workflow-example.yaml +427 -0
  40. package/src/cli.ts +182 -0
  41. package/src/commands/config-cmd.ts +28 -0
  42. package/src/commands/index.ts +21 -0
  43. package/src/commands/init.ts +96 -0
  44. package/src/commands/release-notes.ts +85 -0
  45. package/src/commands/resume.ts +103 -0
  46. package/src/commands/run.ts +234 -0
  47. package/src/commands/shortcuts.ts +11 -0
  48. package/src/commands/skills-dir.ts +11 -0
  49. package/src/commands/status.ts +112 -0
  50. package/src/commands/update.ts +64 -0
  51. package/src/commands/version.ts +27 -0
  52. package/src/commands/workflows.ts +129 -0
  53. package/src/config.ts +129 -0
  54. package/src/console.ts +790 -0
  55. package/src/executor.ts +354 -0
  56. package/src/git/worktree.ts +236 -0
  57. package/src/logging/logger.ts +95 -0
  58. package/src/orchestrator.ts +815 -0
  59. package/src/parser.ts +225 -0
  60. package/src/progress.ts +306 -0
  61. package/src/prompts/agentic-system.md +31 -0
  62. package/src/ralph-loop.ts +260 -0
  63. package/src/renderer.ts +164 -0
  64. package/src/runner.ts +634 -0
  65. package/src/signal-manager.ts +55 -0
  66. package/src/steps/base.ts +71 -0
  67. package/src/steps/conditional-step.ts +144 -0
  68. package/src/steps/index.ts +15 -0
  69. package/src/steps/parallel-step.ts +213 -0
  70. package/src/steps/prompt-step.ts +121 -0
  71. package/src/steps/ralph-loop-step.ts +186 -0
  72. package/src/steps/serial-step.ts +84 -0
  73. package/src/templates/analysis/bug.md.j2 +35 -0
  74. package/src/templates/analysis/debt.md.j2 +38 -0
  75. package/src/templates/analysis/doc.md.j2 +45 -0
  76. package/src/templates/analysis/security.md.j2 +35 -0
  77. package/src/templates/analysis/style.md.j2 +44 -0
  78. package/src/templates/analysis-summary.md.j2 +58 -0
  79. package/src/templates/checkpoint.md.j2 +27 -0
  80. package/src/templates/implementation-report.md.j2 +81 -0
  81. package/src/templates/memory.md.j2 +16 -0
  82. package/src/templates/plan-bug.md.j2 +42 -0
  83. package/src/templates/plan-chore.md.j2 +27 -0
  84. package/src/templates/plan-feature.md.j2 +41 -0
  85. package/src/templates/progress.json.j2 +16 -0
  86. package/src/templates/ralph-report.md.j2 +45 -0
  87. package/src/types.ts +141 -0
  88. package/src/workflows/analyze-codebase-merge.yaml +328 -0
  89. package/src/workflows/analyze-codebase.yaml +196 -0
  90. package/src/workflows/analyze-single.yaml +56 -0
  91. package/src/workflows/demo.yaml +180 -0
  92. package/src/workflows/one-shot.yaml +54 -0
  93. package/src/workflows/plan-build-review.yaml +160 -0
  94. package/src/workflows/ralph-loop.yaml +73 -0
  95. package/tests/config.test.ts +219 -0
  96. package/tests/console.test.ts +506 -0
  97. package/tests/executor.test.ts +339 -0
  98. package/tests/init.test.ts +86 -0
  99. package/tests/logger.test.ts +110 -0
  100. package/tests/parser.test.ts +290 -0
  101. package/tests/progress.test.ts +345 -0
  102. package/tests/ralph-loop.test.ts +418 -0
  103. package/tests/renderer.test.ts +350 -0
  104. package/tests/runner.test.ts +497 -0
  105. package/tests/setup.test.ts +7 -0
  106. package/tests/signal-manager.test.ts +26 -0
  107. package/tests/steps.test.ts +412 -0
  108. package/tests/worktree.test.ts +411 -0
  109. package/tsconfig.json +18 -0
  110. 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
+ }
@@ -0,0 +1,3 @@
1
+ node_modules
2
+ pnpm-lock.yaml
3
+ .git
package/.prettierrc ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "proseWrap": "preserve",
3
+ "tabWidth": 2,
4
+ "useTabs": false,
5
+ "trailingComma": "none"
6
+ }
@@ -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
@@ -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.