Skip to content

Commit 2645ee1

Browse files
committed
Update CI, configs, and docs for monorepo structure
CI workflows: - Add working-directory: container to all container job steps - Add path filters (container/**, cli/**) to trigger workflows selectively - Add test-cli job using Bun for CLI package - Update changelog/package.json paths for container subdirectory - Update devcontainer feature publish paths Config: - Add repository.directory to container and cli package.json - Remove docs:* scripts from container (docs is now a sibling package) - Simplify container/.gitignore (root handles shared patterns) - Update dependabot directories for monorepo layout Docs: - Add root README.md with monorepo overview and package table - Add root CLAUDE.md with branching strategy and dev rules - Update container/CLAUDE.md to reference root for shared rules
1 parent f2430e9 commit 2645ee1

12 files changed

Lines changed: 153 additions & 93 deletions

File tree

.github/dependabot.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
version: 2
22
updates:
33
- package-ecosystem: "npm"
4-
directory: "/"
4+
directory: "/container"
5+
schedule:
6+
interval: "weekly"
7+
8+
- package-ecosystem: "npm"
9+
directory: "/cli"
510
schedule:
611
interval: "weekly"
712

.github/workflows/ci.yml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@ name: CI
33
on:
44
push:
55
branches: [main, staging]
6+
paths: ['container/**']
67
pull_request:
78
branches: [main, staging]
9+
paths: ['container/**']
810

911
jobs:
1012
test:
@@ -15,6 +17,7 @@ jobs:
1517
with:
1618
node-version: 18
1719
- run: npm test
20+
working-directory: container
1821

1922
lint:
2023
runs-on: ubuntu-latest
@@ -24,6 +27,7 @@ jobs:
2427
with:
2528
node-version: 18
2629
- run: npx @biomejs/biome check setup.js test.js
30+
working-directory: container
2731

2832
test-plugins:
2933
runs-on: ubuntu-latest
@@ -34,3 +38,14 @@ jobs:
3438
python-version: "3.x"
3539
- run: pip install pytest
3640
- run: pytest tests/ -v
41+
working-directory: container
42+
43+
test-cli:
44+
runs-on: ubuntu-latest
45+
steps:
46+
- uses: actions/checkout@v6
47+
- uses: oven-sh/setup-bun@v2
48+
- run: bun install
49+
working-directory: cli
50+
- run: bun test
51+
working-directory: cli

.github/workflows/deploy-docs.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name: Deploy Docs
33
on:
44
push:
55
branches: [main]
6-
paths: ['docs/**', '.devcontainer/CHANGELOG.md']
6+
paths: ['docs/**', 'container/.devcontainer/CHANGELOG.md']
77
workflow_dispatch:
88

99
permissions:

.github/workflows/docs-ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: Docs CI
22

33
on:
44
pull_request:
5-
paths: ['docs/**', '.devcontainer/CHANGELOG.md']
5+
paths: ['docs/**', 'container/.devcontainer/CHANGELOG.md']
66

77
jobs:
88
build:

.github/workflows/publish-features.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ on:
44
workflow_dispatch:
55
push:
66
branches: [main]
7-
paths: ['.devcontainer/features/**']
7+
paths: ['container/.devcontainer/features/**']
88

99
jobs:
1010
publish:
@@ -19,7 +19,7 @@ jobs:
1919
uses: devcontainers/action@v1
2020
with:
2121
publish-features: "true"
22-
base-path-to-features: "./.devcontainer/features"
22+
base-path-to-features: "./container/.devcontainer/features"
2323
generate-docs: "false"
2424
env:
2525
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.github/workflows/release.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jobs:
1616
name: Extract and validate version
1717
run: |
1818
TAG="${GITHUB_REF#refs/tags/v}"
19-
PKG=$(node -p "require('./package.json').version")
19+
PKG=$(node -p "require('./container/package.json').version")
2020
echo "version=$TAG" >> "$GITHUB_OUTPUT"
2121
if [ "$TAG" != "$PKG" ]; then
2222
echo "::error::Tag v${TAG} does not match package.json version ${PKG}"
@@ -38,17 +38,19 @@ jobs:
3838

3939
- name: Run tests
4040
run: npm test
41+
working-directory: container
4142

4243
- name: Publish to npm
4344
run: npm publish
45+
working-directory: container
4446
env:
4547
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
4648

4749
- name: Extract changelog section
4850
id: changelog
4951
run: |
5052
VERSION="${{ needs.validate.outputs.version }}"
51-
NOTES=$(sed -n "/^## \[v${VERSION}\]/,/^## \[v/{ /^## \[v${VERSION}\]/d; /^## \[v/d; p; }" .devcontainer/CHANGELOG.md)
53+
NOTES=$(sed -n "/^## \[v${VERSION}\]/,/^## \[v/{ /^## \[v${VERSION}\]/d; /^## \[v/d; p; }" container/.devcontainer/CHANGELOG.md)
5254
if [ -z "$NOTES" ]; then
5355
NOTES="Release v${VERSION}"
5456
fi

CLAUDE.md

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# CodeForge Monorepo
2+
3+
This repository contains three packages. Each package manages its own dependencies independently.
4+
5+
## Packages
6+
7+
| Package | Runtime | Package Manager |
8+
|---------|---------|-----------------|
9+
| `container/` | Node.js | npm |
10+
| `cli/` | Bun | bun |
11+
| `docs/` | Node.js | npm |
12+
13+
## Development Rules
14+
15+
### Branching Strategy
16+
17+
- **`main`** — production/release branch. Only updated via PRs from `staging`.
18+
- **`staging`** — integration branch. All feature/fix branches target `staging` for PRs.
19+
- Feature and fix branches should be created from `staging` and PRed back to `staging`.
20+
- PRs from `staging` to `main` are used for releases.
21+
22+
### Package-Specific Rules
23+
24+
Each package has its own `CLAUDE.md` with package-specific development rules:
25+
26+
- [`container/CLAUDE.md`](container/CLAUDE.md) — changelog, documentation, and configuration rules for the devcontainer package
27+
- `cli/` — Bun/TypeScript CLI; run `bun test` for tests
28+
- `docs/` — Astro/Starlight site; run `npm run build` to verify
29+
30+
### Cross-Package Changes
31+
32+
When a change spans multiple packages, make the changes in a single branch and PR.
33+
Group related changes in the commit message by package.
34+
35+
### Testing
36+
37+
Run tests for each affected package before committing:
38+
39+
- **Container**: `cd container && npm test`
40+
- **CLI**: `cd cli && bun test`
41+
- **Docs**: `cd docs && npm run build`

README.md

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# CodeForge
2+
3+
Monorepo for CodeForge — an AI-powered development environment for Claude Code.
4+
5+
## Packages
6+
7+
| Package | Description | Version |
8+
|---------|-------------|---------|
9+
| [`container/`](container/) | CodeForge DevContainer (`codeforge-dev` on npm) | 2.0.0 |
10+
| [`cli/`](cli/) | CodeForge CLI (`codeforge-cli`) | 0.1.0 |
11+
| [`docs/`](docs/) | Documentation site ([codeforge.core-directive.com](https://codeforge.core-directive.com)) ||
12+
13+
## Quick Start
14+
15+
```bash
16+
# Install the devcontainer into any project
17+
npx codeforge-dev
18+
```
19+
20+
See [`container/README.md`](container/README.md) for full setup instructions, prerequisites, and usage.
21+
22+
## Development
23+
24+
Each package manages its own dependencies independently:
25+
26+
```bash
27+
# Container (npm)
28+
cd container && npm test
29+
30+
# CLI (Bun)
31+
cd cli && bun test
32+
33+
# Docs (npm)
34+
cd docs && npm run build
35+
```
36+
37+
See [`CLAUDE.md`](CLAUDE.md) for branching strategy and development rules.
38+
39+
## Links
40+
41+
- [Documentation](https://codeforge.core-directive.com)
42+
- [npm package](https://www.npmjs.com/package/codeforge-dev)
43+
- [GitHub](https://github.com/AnExiledDev/CodeForge)
44+
- [Changelog](container/.devcontainer/CHANGELOG.md)
45+
46+
## Contributing
47+
48+
We welcome contributions! Please read our [Contributing Guide](CONTRIBUTING.md)
49+
before submitting a pull request. All contributions require signing our
50+
[Contributor License Agreement](CLA.md).
51+
52+
## License
53+
54+
This project is licensed under the [GNU General Public License v3.0](LICENSE.txt).
55+
56+
**Commercial licensing** is available for organizations that need to use CodeForge
57+
without GPL-3.0 obligations. Contact
58+
[696222+AnExiledDev@users.noreply.github.com](mailto:696222+AnExiledDev@users.noreply.github.com)
59+
or [open a GitHub issue](https://github.com/AnExiledDev/CodeForge/issues/new)
60+
for terms.

cli/package.json

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,14 @@
2525
"node": ">=18.0.0"
2626
},
2727
"license": "GPL-3.0",
28-
"author": "AnExiledDev"
28+
"author": "AnExiledDev",
29+
"repository": {
30+
"type": "git",
31+
"url": "git+https://github.com/AnExiledDev/CodeForge.git",
32+
"directory": "cli"
33+
},
34+
"homepage": "https://github.com/AnExiledDev/CodeForge/tree/main/cli#readme",
35+
"bugs": {
36+
"url": "https://github.com/AnExiledDev/CodeForge/issues"
37+
}
2938
}

container/.gitignore

Lines changed: 4 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,5 @@
1-
# CodeForge Git Ignore
2-
3-
# Environment files with API keys
4-
.env
5-
.env.local
6-
.env.development.local
7-
.env.test.local
8-
.env.production.local
9-
10-
# DevContainer build cache
11-
.devcontainer/.dockercache/
12-
13-
# IDE files
14-
.vscode/settings.json
15-
*.swp
16-
*.swo
17-
*~
18-
19-
# Temporary files
20-
*.tmp
21-
*.temp
22-
.DS_Store
23-
Thumbs.db
24-
25-
# Logs
26-
*.log
27-
npm-debug.log*
28-
yarn-debug.log*
29-
yarn-error.log*
30-
31-
# Runtime data
32-
pids
33-
*.pid
34-
*.seed
35-
*.pid.lock
36-
37-
# Coverage directory used by tools like istanbul
38-
coverage/
39-
*.lcov
40-
41-
# nyc test coverage
42-
.nyc_output
43-
44-
logs
45-
dev-debug.log
46-
# Python bytecode
47-
__pycache__/
48-
*.pyc
49-
50-
# Dependency directories
51-
node_modules/
52-
# Environment variables
53-
# Editor directories and files
54-
.idea
55-
.vscode
56-
*.suo
57-
*.ntvs*
58-
*.njsproj
59-
*.sln
60-
*.sw?
61-
# OS specific
1+
# Container-specific .gitignore
2+
# Shared patterns (node_modules, dist, .env, etc.) are in the root .gitignore
623

634
# Claude Code directory (user-specific)
645
.claude/
@@ -68,17 +9,12 @@ node_modules/
689
!.devcontainer/
6910
!.devcontainer/**/.claude-plugin/
7011
!.codeforge/
71-
!.git/
72-
!.github/
7312
!.gitignore
74-
!.gitattributes
7513
!.npmignore
7614

7715
# .codeforge per-installation state (not tracked)
7816
.codeforge/.checksums/
7917
.codeforge/.markers/
8018

81-
# Docs
82-
docs/node_modules/
83-
docs/dist/
84-
docs/.astro/
19+
# DevContainer build cache
20+
.devcontainer/.dockercache/

0 commit comments

Comments
 (0)