Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .directory
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[Desktop Entry]
Icon=folder-orange
2 changes: 1 addition & 1 deletion .github/workflows/daily-digest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
digest:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/reusable-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ jobs:
if: ${{ inputs.run-lint }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-node@v4
Expand All @@ -47,7 +47,7 @@ jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ inputs.node-version }}
Expand All @@ -60,7 +60,7 @@ jobs:
needs: [test]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ inputs.node-version }}
Expand All @@ -73,7 +73,7 @@ jobs:
if: ${{ inputs.run-security-audit }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ inputs.node-version }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/reusable-claude-review.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
statuses: write
id-token: write
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v4
with:
fetch-depth: 1

Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ coverage/
*.tsbuildinfo
.env
.env.local
prompt.txt
3 changes: 3 additions & 0 deletions .playwright-mcp/console-2026-02-17T14-06-42-000Z.log
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[ 538ms] [ERROR] Failed to load resource: the server responded with a status of 404 () @ https://github.com/anombyte93/copilot/issues/2:0
[ 5150ms] [WARNING] The resource https://github.githubassets.com/assets/global-banner-disable-8a300af6d815087d.js was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally. @ https://github.com/anombyte93/copilot/issues/2:0
[ 5150ms] [WARNING] The resource https://github.githubassets.com/assets/mona-sans-14595085164a.woff2 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally. @ https://github.com/anombyte93/copilot/issues/2:0
3 changes: 3 additions & 0 deletions .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
".": "1.0.0"
}
1 change: 0 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,6 @@ jobs:
- GitHub Actions workflow_dispatch verified

### NEED TO DO
- Tag v1.0.0 for reusable workflow references
- Onboard first external repo (atlas-session-lifecycle)
- Playwright visual verification of digest issue

Expand Down
127 changes: 127 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
# Atlas-Copilot — Self-Hosted CI/CD & AI Review

Reusable CI/CD and Claude Code review workflows for GitHub repositories.

**Free forever. Self-hosted. No vendor lock-in.**

> Bring your own Anthropic API key — your code never leaves your infrastructure.

## Quick Start

### CI Pipeline

Call the reusable CI workflow from your repository:

```yaml
# .github/workflows/ci.yml
name: CI
on:
pull_request:
branches: [main]

jobs:
ci:
uses: anombyte93/atlas-copilot/.github/workflows/reusable-ci.yml@v1
with:
node-version: '22'
test-command: 'npm test -- --coverage --ci'
```

### Claude Code Review

Automated PR review powered by Claude:

```yaml
# .github/workflows/claude-review.yml
name: Claude Review
on:
pull_request:
types: [opened, synchronize]
issue_comment:
types: [created]
issues:
types: [assigned]

jobs:
review:
uses: anombyte93/atlas-copilot/.github/workflows/reusable-claude-review.yml@v1
secrets: inherit
with:
review-instructions: 'Focus on security and performance.'
```

## Workflows

### Reusable CI Pipeline

Full CI pipeline with commitlint, tests, build, and security audit.

| Input | Type | Default | Description |
|-------|------|---------|-------------|
| `node-version` | string | `'22'` | Node.js version |
| `run-lint` | boolean | `true` | Run commitlint on PR title |
| `test-command` | string | `'npm test -- --coverage --ci'` | Test command |
| `build-command` | string | `'npm run build'` | Build command |
| `install-command` | string | `'npm ci'` | Install command |
| `run-security-audit` | boolean | `true` | Run `npm audit` |

**Jobs**: commitlint, test, build, security audit, result notification comment.

### Reusable Claude Code Review

AI-powered PR review that creates GitHub issues for must-fix findings and sets commit statuses.

| Input | Type | Default | Description |
|-------|------|---------|-------------|
| `review-instructions` | string | `''` | Extra review instructions appended to base prompt |
| `allowed-bots` | string | `'dependabot[bot],renovate[bot]'` | Comma-separated bot usernames to allow |

**Required secrets**: `ANTHROPIC_API_KEY` — passed via `secrets: inherit` or explicitly.

**Behavior**:
- Reviews PRs for security vulnerabilities, TypeScript strictness, and performance
- Classifies findings by severity: `must-fix`, `should-fix`, `suggestion`
- Creates GitHub issues with `review-blocking` label for must-fix findings
- Sets commit status to failure when must-fix findings exist
- Uploads review transcript as artifact (30-day retention)

## Required Secrets

| Secret | Required By | Description |
|--------|-------------|-------------|
| `ANTHROPIC_API_KEY` | Claude Review | Anthropic API key for Claude |

The CI pipeline uses only `github.token` (automatic).

## Versioning

Use the `@v1` tag for stable releases:

```yaml
uses: anombyte93/atlas-copilot/.github/workflows/reusable-ci.yml@v1
```

Breaking changes will increment the major version tag.

## Why Atlas-Copilot?

| Feature | Atlas-Copilot | CodeRabbit | Graphite |
|---------|---------------|------------|----------|
| **Cost** | Free (BYO key) | $12-24/user/mo | $20-40/user/mo |
| **Self-hosted** | ✅ Yes | Partial | ❌ No |
| **Code stays private** | ✅ Your infra | ❌ Sent to SaaS | ❌ Sent to SaaS |
| **LLM choice** | Any Claude model | Gemini only | Proprietary |
| **Reusable workflows** | ✅ Copy-paste YAML | ❌ App only | ❌ App only |
| **Vendor lock-in** | ❌ None | ✅ Platform | ✅ Platform |

**Bring your own Anthropic API key** — your code never leaves your GitHub infrastructure.

```yaml
uses: anombyte93/atlas-copilot/.github/workflows/reusable-ci.yml@v1
```

Breaking changes will increment the major version tag.

## License

MIT
3 changes: 3 additions & 0 deletions commitlint.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export default {
extends: ['@commitlint/config-conventional'],
};
Loading
Loading