Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
163 commits
Select commit Hold shift + click to select a range
420c754
Merge pull request #1 from christopherkarani/feat/ane-multitoken
christopherkarani Mar 11, 2026
db0953b
Narrow launch copy and fix public license
christopherkarani Mar 11, 2026
cc9fb1e
Humanize README for HN launch
christopherkarani Mar 11, 2026
91393d6
"Claude PR Assistant workflow"
christopherkarani Mar 11, 2026
0930b5e
"Claude Code Review workflow"
christopherkarani Mar 11, 2026
dc4bfef
Merge pull request #2 from christopherkarani/add-claude-github-action…
christopherkarani Mar 11, 2026
cc98f10
feat(bench): align espresso-bench target dependencies
christopherkarani Mar 11, 2026
557829f
feat(bench): add benchmark statistics and flops helpers
christopherkarani Mar 11, 2026
8aee06b
feat(bench): add locale-stable reporting and thermal sampling
christopherkarani Mar 11, 2026
03cbdb4
feat(bench): wire direct ane benchmark runner
christopherkarani Mar 11, 2026
f845319
feat(bench): refine coreml baseline loading
christopherkarani Mar 11, 2026
455da7e
feat(bench): simplify espresso-bench cli flow
christopherkarani Mar 11, 2026
ea96759
feat(bench): add coreml generation and power scripts
christopherkarani Mar 11, 2026
6f732d8
feat(bench): finalize benchmark task tracking
christopherkarani Mar 11, 2026
eb70e78
Review HEAD vs main changes
christopherkarani Mar 11, 2026
56a29ac
Skip redundant pair1 output-head during prefill, halving warm TTFT
christopherkarani Mar 12, 2026
ecc529c
Eliminate ~49MB futureClassifier allocation when no future sidecar pr…
christopherkarani Mar 12, 2026
02433e9
Use vectorized vDSP_maxvi for argmax and remove redundant logits zeroing
christopherkarani Mar 12, 2026
36027ac
perf(serving): add spatial-lane batched multistream generation for 2x…
christopherkarani Mar 12, 2026
b7b80fa
perf(serving): extend batched multistream sweep to 32 spatial lanes —…
christopherkarani Mar 12, 2026
df42370
perf(serving): add batched spatial-lane I/O for 78% throughput gain a…
christopherkarani Mar 12, 2026
c54fd1e
Non-owning TensorBuffer views eliminate ~188MB weight cloning (-82% c…
christopherkarani Mar 12, 2026
cdd224f
Replace scalar embedding copy loops with memcpy (code cleanup)
christopherkarani Mar 12, 2026
e077dc6
perf(serving): NEON-vectorized batch argmax for 57% throughput gain a…
christopherkarani Mar 12, 2026
a4a7c67
Vectorize identity-zero-trunk check with vDSP_maxmgv (-41% cold TTFT)
christopherkarani Mar 12, 2026
9a54946
Log warm TTFT floor analysis: sgemm at DRAM bandwidth limit
christopherkarani Mar 12, 2026
f7c89ae
Skip 54MB zero-trunk validation in release builds (-19% cold TTFT)
christopherkarani Mar 12, 2026
8d6370c
Add autoresearch artifacts to .gitignore
christopherkarani Mar 12, 2026
ae8c6d0
Log TTFT optimization convergence: all metrics at sgemm floor
christopherkarani Mar 12, 2026
7bbd170
perf(serving): generalize NEON argmax + scale to 128 spatial lanes fo…
christopherkarani Mar 12, 2026
b33ca99
perf(serving): NEON embed write + 256 spatial lanes: ~50K TPS@256
christopherkarani Mar 12, 2026
bdc99f5
perf(serving): factored classifier [768→128→32000] for 35.6% throughp…
christopherkarani Mar 12, 2026
3d70577
probe: exhaustive dispatch-reduction and argmax probes (all dead ends)
christopherkarani Mar 12, 2026
844c6b6
perf(argmax): channel-partitioned parallel NEON argmax via dispatch_a…
christopherkarani Mar 12, 2026
12f2bdb
perf(argmax): 8-block parallel argmax with stack allocation
christopherkarani Mar 12, 2026
185179d
probe: n=16 parallel argmax regression documented
christopherkarani Mar 12, 2026
5974d16
perf(serving): 512 spatial lanes enabled — 103K TPS avg (+25% vs 256)
christopherkarani Mar 12, 2026
be13f45
probe: 512-lane component timing, k-sweep, int8 quantization, GCD ove…
christopherkarani Mar 12, 2026
dbd9f4a
revert: n=12 argmax shows no improvement over n=8
christopherkarani Mar 12, 2026
7641b79
perf(serving): zero-copy surface rebinding — eliminate 7 copies/step
christopherkarani Mar 12, 2026
d971f4a
perf(serving): grouped convolutions (groups=16) — 132K TPS@256 (+18%)
christopherkarani Mar 12, 2026
cdb23c4
Grouped classifier head: groups param for factored RMSNorm+classifier
christopherkarani Mar 12, 2026
4c13f73
feat: add SVG banner and update optimization roadmap documentation
christopherkarani Mar 12, 2026
d4a14b5
Update README.md
christopherkarani Mar 12, 2026
36994fa
docs: add demo GIF to README
christopherkarani Mar 12, 2026
ee264ee
Add lockless argmax + vocabSize benchmark flexibility
christopherkarani Mar 12, 2026
b1b5096
perf(serving): -O2 for C target + fused expansion+argmax infrastructure
christopherkarani Mar 12, 2026
0961180
perf(serving): 512 streams optimal with -O2 — 137K TPS (+10% vs 256)
christopherkarani Mar 12, 2026
9f4718c
chore: clean up github-facing state
christopherkarani Mar 12, 2026
a9d2327
chore: remove remaining internal dev files from tracking
christopherkarani Mar 12, 2026
063623c
fix: restore banner.svg to repo root
christopherkarani Mar 12, 2026
f39cd10
fix: restore demo.gif to repo root
christopherkarani Mar 12, 2026
d697631
Add optimization infrastructure: mmap weights, FP16/INT4 classifiers,…
christopherkarani Mar 12, 2026
6d0b978
perf(serving): pipelined double-buffer + 1024 streams — 170K TPS (+26%)
christopherkarani Mar 12, 2026
e8ec912
Wire partitioned argmax into ANERecurrentGenerationModel and add clas…
christopherkarani Mar 12, 2026
98f59ea
Wire deferred ANE head into cpuThenANE backend with background compil…
christopherkarani Mar 12, 2026
785e9c7
Add streaming two-token decode with sequential baseline and correctne…
christopherkarani Mar 12, 2026
541a392
Log cycle 12: all 8 optimization tiers wired and tested (408 tests, 0…
christopherkarani Mar 12, 2026
625822a
Fix release build: replace ~Copyable optional with sentinel pattern
christopherkarani Mar 13, 2026
1f4afe7
Add NEON-vectorized I/O, reduce_max hint argmax, and FP16 gather/scatter
christopherkarani Mar 13, 2026
26af5fd
Converge autoresearch TTFT loop: eval-only proves 96.5% hardware-domi…
christopherkarani Mar 13, 2026
7986e6c
perf(serving): batched spatial-lane serving in matched benchmark — 60…
christopherkarani Mar 13, 2026
ea6e0d7
perf(serving): extend matched benchmark to 512-stream ANE sweep
christopherkarani Mar 13, 2026
e8c9348
perf(serving): integrate pipelined double-buffer into matched benchma…
christopherkarani Mar 13, 2026
45ac62e
Add ANE private API App Store disclaimer to README
claude Mar 13, 2026
74fa847
perf(serving): extend NEON argmax/embed to spatial=2048 — unlocks +4%…
christopherkarani Mar 13, 2026
0aa7450
Merge pull request #6 from christopherkarani/claude/add-ane-disclaime…
christopherkarani Mar 13, 2026
e8d0201
perf(serving): ANE proj-only head + MPS GPU expansion — 238K TPS (+44%)
christopherkarani Mar 13, 2026
baad1a7
perf(serving): extend spatial to 4096 — 324K TPS peak (+36% over 2048)
christopherkarani Mar 13, 2026
7985c2a
perf(serving): extend spatial to 8192 — 415K TPS peak (+29% over 4096)
christopherkarani Mar 13, 2026
f7ebfae
perf(serving): extend spatial to 16384 — 494K TPS peak (+19% over 8192)
christopherkarani Mar 13, 2026
52227d9
perf(serving): GPU full head — move RMSNorm+proj off ANE → 519K TPS (…
christopherkarani Mar 13, 2026
b2ba12d
perf(serving): NoRMS recurrent mode — 619K TPS (+19% over 519K)
christopherkarani Mar 13, 2026
eb12b46
Fix benchmark parity and weight lifetime safety
christopherkarani Mar 13, 2026
0f64629
perf(serving): GPU pipelined head with embed — 946K TPS (+53% over 619K)
christopherkarani Mar 13, 2026
f231c47
Merge origin/main and harden Claude workflow
christopherkarani Mar 13, 2026
963bfc1
Skip legacy header parity test when fixture is absent
christopherkarani Mar 13, 2026
1a52a60
Restore cpuThenANE fallback and fix README references
christopherkarani Mar 13, 2026
3c73742
Cycle 28: bneck 64→32 for +7% pipeline throughput
christopherkarani Mar 13, 2026
282cd93
Add gitignore for Mac app assets
christopherkarani Mar 13, 2026
a2c29cc
Fix review branch merge blockers
christopherkarani Mar 13, 2026
2cfd97b
Merge origin/main into review branch
christopherkarani Mar 13, 2026
885225a
Merge pull request #9 from christopherkarani/codex/review-head-vs-main
christopherkarani Mar 13, 2026
2ec0a3e
Fix autoresearch multistream review findings
christopherkarani Mar 13, 2026
ad9b4ee
Fix benchmark review findings
christopherkarani Mar 13, 2026
a81642d
Remove autoresearch-results.tsv from tracking
christopherkarani Mar 13, 2026
5c074fb
Merge branch 'codex/fix-autoresearch-review' into codex/merge-feat-au…
christopherkarani Mar 14, 2026
2ea45bd
Rewrite README for higher conversion and clarity
christopherkarani Mar 14, 2026
eec10f9
Untrack ignored script and fix README references
christopherkarani Mar 14, 2026
cc77542
Merge pull request #11 from christopherkarani/cleanup
christopherkarani Mar 14, 2026
908121e
Clean up README and move assets to .github/assets/
christopherkarani Mar 14, 2026
e539616
Merge origin/main into feat/autoresearch-multistream
christopherkarani Mar 14, 2026
a2f81a1
Fix all code review findings from PR #10
christopherkarani Mar 14, 2026
b5e0e44
Merge pull request #10 from christopherkarani/feat/autoresearch-multi…
christopherkarani Mar 14, 2026
b32e92d
Merge branch 'feat/autoresearch-multistream' of github.com:christophe…
christopherkarani Mar 14, 2026
72c114d
Clean up README and move assets to .github/assets/
christopherkarani Mar 14, 2026
9e6ea48
Fix multistream argmax safety and benchmark parity
christopherkarani Mar 14, 2026
567b0e2
Merge feat/autoresearch-multistream
christopherkarani Mar 14, 2026
afb4e45
Merge branch 'cleanup'
christopherkarani Mar 14, 2026
319f413
Untrack generated benchmark artifacts and local results
christopherkarani Mar 14, 2026
77e6ff1
Document scripts and benchmarks layout for cleaner GitHub repo
christopherkarani Mar 14, 2026
45f9c24
feat(ir): add ANEGraphIR — typed graph IR with 25 ops, Kahn's topoSort
christopherkarani Mar 14, 2026
b477016
fix(ir): enforce ANEGraphIR invariants and invalid-state rejection
christopherkarani Mar 14, 2026
11b7576
feat(ane-passes): add ANE optimization and validation pipeline
christopherkarani Mar 14, 2026
80ae262
Add ANE MIL graph codegen and diff utilities
christopherkarani Mar 14, 2026
a2ee034
Add ANEBuilder composite graph builders
christopherkarani Mar 14, 2026
7710cf0
perf: vectorize Adam optimizer with workspace
christopherkarani Mar 15, 2026
a60205e
Merge wave2a: ANECodegen — IR to MIL text emission
christopherkarani Mar 15, 2026
f454fc1
Merge wave2b: ANEPasses — optimization and validation pipeline
christopherkarani Mar 15, 2026
f31f8e7
Merge wave2c: ANEBuilder — composite graph builders
christopherkarani Mar 15, 2026
c9f9bad
perf: thread RMSNorm workspace through BackwardPass to eliminate 24 h…
christopherkarani Mar 15, 2026
4b81d0a
Add ModelSupport GPT-2 and Llama support
christopherkarani Mar 15, 2026
908372a
perf: precompute RoPE frequency table outside innermost loop
christopherkarani Mar 15, 2026
e51897b
Add delta compilation and LoRA adapter modules
christopherkarani Mar 15, 2026
321f64e
Fix ModelSupport review findings
christopherkarani Mar 15, 2026
6f71724
Fix delta reload race and fast reload recovery
christopherkarani Mar 15, 2026
1235b56
Migrate MIL generators to graph IR parity harness
christopherkarani Mar 15, 2026
b4c82eb
Merge pull request #13 from christopherkarani/phase3a-corrected
christopherkarani Mar 15, 2026
bd26899
Merge origin/main into phase3c-corrected
christopherkarani Mar 15, 2026
68607c0
Merge pull request #14 from christopherkarani/phase3c-corrected
christopherkarani Mar 15, 2026
87b52b0
Merge origin/main into wave3b-models
christopherkarani Mar 15, 2026
9b4a94c
Merge pull request #12 from christopherkarani/wave3b-models
christopherkarani Mar 15, 2026
d7e6f7e
Merge branch 'main' of github.com:christopherkarani/Espresso
christopherkarani Mar 15, 2026
b2bcbff
Add GPT-2 inference CLI and TUI demo
christopherkarani Mar 16, 2026
68e1562
Restore GPT-2 compare path and speed up greedy head
christopherkarani Mar 16, 2026
1931604
Teach hybrid decode kernels GPT-2 exact math
christopherkarani Mar 16, 2026
b294cf9
Fix GPT-2 hybrid QKV output ordering
christopherkarani Mar 16, 2026
b024a92
Cut hybrid decode context and projection copy overhead
christopherkarani Mar 16, 2026
b862591
Accelerate hybrid GPT-2 greedy head on ANE
christopherkarani Mar 16, 2026
8834d6e
Add hinted ANE classifier path for GPT-2 greedy decode
christopherkarani Mar 16, 2026
a53f54d
Checkpoint benchmark-path changes before next ANE pass
christopherkarani Mar 16, 2026
623e044
Batch hybrid KV cache slice updates
christopherkarani Mar 16, 2026
e6bf51d
Chain hybrid GPT-2 decode layers directly
christopherkarani Mar 16, 2026
edb74ce
Default CLI ANE compile cache policy
christopherkarani Mar 16, 2026
06028f9
Add guarded GPT-2 speculative decode runtime
christopherkarani Mar 16, 2026
56cf8b9
Reuse speculative runtimes and seed ANE cache donors
christopherkarani Mar 16, 2026
891ae4d
Fix speculative runtime review findings
christopherkarani Mar 16, 2026
7b124dd
Merge pull request #15 from christopherkarani/perf/gpt2-speculative-r…
christopherkarani Mar 16, 2026
df6d5cb
docs: polish README with benchmark tables, platform matrix, quick-start
christopherkarani Mar 16, 2026
cd42c12
ci: add GitHub Actions CI workflow, CONTRIBUTING.md, and PR/issue tem…
christopherkarani Mar 16, 2026
cfd2efc
feat(sales): add developer outreach strategy and conference proposals
christopherkarani Mar 16, 2026
cb1d7ee
feat: add Examples/ directory with SimpleInference, BenchmarkSuite, T…
christopherkarani Mar 16, 2026
dc7e899
feat: add Llama 3.2 1B + 3B configs, benchmark dashboard, v1.1.0
christopherkarani Mar 16, 2026
7325e92
feat(marketing): add 3 SEO blog posts + blog index page
christopherkarani Mar 16, 2026
5caaa3f
feat: add EspressoGGUF bridge — load GGUF models via EdgeRunner for A…
christopherkarani Mar 17, 2026
f7a98f8
feat: add ClassifierStrategy enum to gate ANE vs CPU-tiled classifier
christopherkarani Mar 17, 2026
ff06eb6
refactor: migrate GenerationHarness protocols from UInt16 to TokenID
christopherkarani Mar 17, 2026
ba1ce9d
refactor: Embedding and CrossEntropy use TokenID (UInt32)
christopherkarani Mar 17, 2026
d0c4fdf
fix: remove unused import, add boundary tests for ClassifierStrategy
christopherkarani Mar 17, 2026
14063c2
refactor: Embedding lookup/backward use TokenID (UInt32)
christopherkarani Mar 17, 2026
dbe6fec
refactor: argmax and output head use TokenID
christopherkarani Mar 17, 2026
ad73c74
feat: wire ClassifierStrategy into RealModelInferenceEngine for ANE/C…
christopherkarani Mar 17, 2026
d51cb86
refactor: CPURecurrentGenerationModel uses TokenID
christopherkarani Mar 17, 2026
1e9bd46
refactor: RealModelInferenceEngine uses TokenID, remove UInt16 vocab …
christopherkarani Mar 17, 2026
eb934cb
refactor: SurfaceIO embedding write accepts TokenID with narrowing co…
christopherkarani Mar 17, 2026
1065a25
fix: hoist hidden buffer allocation, use idiomatic vDSP scalar pattern
christopherkarani Mar 17, 2026
a2d1b2d
refactor: executables use TokenID
christopherkarani Mar 17, 2026
149beee
refactor: data pipeline uses TokenID
christopherkarani Mar 17, 2026
5162ec3
fix: migrate TokenID UInt16→UInt32 across tests and sources; add RoPE…
christopherkarani Mar 17, 2026
72c1bb1
fix: complete UInt16 → TokenID migration in tests and training pipeline
christopherkarani Mar 17, 2026
a469e34
test: update all tests for TokenID migration
christopherkarani Mar 17, 2026
6e5f7d3
fix: preserve RoPE error context, add EOS stopping, gate GPT-2 greedy…
christopherkarani Mar 17, 2026
8601d10
fix: read ropeTheta from GGUF metadata in GGUFModelLoader
christopherkarani Mar 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
43 changes: 43 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
---
name: Bug report
about: Something is broken
title: "[Bug] "
labels: bug
assignees: ""
---

## Description

A clear description of the bug.

## Steps to reproduce

```bash
# Exact commands that trigger the issue
```

## Expected behavior

What you expected to happen.

## Actual behavior

What actually happened. Include the full error output.

## Environment

```
# Output of: ./espresso doctor
```

| | |
|---|---|
| Hardware | e.g. M3 Max |
| macOS | e.g. 15.3 |
| Swift | e.g. 6.2 (output of `swift --version`) |
| Xcode | e.g. 16.2 |
| Espresso commit | e.g. `git rev-parse HEAD` |

## Additional context

Add any other context (MIL snippets, crash logs, etc.).
23 changes: 23 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---
name: Feature request
about: Suggest a new capability
title: "[Feature] "
labels: enhancement
assignees: ""
---

## Use case

What problem does this feature solve? Who benefits?

## Proposed solution

Describe what you'd like to see. Be specific about the API surface or behavior.

## Alternatives considered

What alternatives did you consider? Why is the proposed solution better?

## Additional context

Relevant links, prior art, ANE constraints, or other notes.
27 changes: 27 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
## Summary

<!-- What does this PR do? 1–3 sentences. -->

## Changes

-
-

## Testing

- [ ] Unit tests pass (`swift test`)
- [ ] Hardware tests pass (`ANE_HARDWARE_TESTS=1 swift test`) — skip if no ANE
- [ ] New code has test coverage

## Benchmark impact

<!-- If this touches the hot path, include a before/after. Use ./scripts/reproduce_local_real_artifact_claim.sh -->

None / N/A

## Checklist

- [ ] Code compiles under Swift 6.2 strict concurrency (`.swiftLanguageMode(.v6)`)
- [ ] No external dependencies added
- [ ] Files ≤400 lines, functions ≤50 lines
- [ ] Commit messages follow `type: summary` convention
20 changes: 20 additions & 0 deletions .github/assets/banner.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .github/assets/demo.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
38 changes: 38 additions & 0 deletions .github/workflows/benchmark-dashboard.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: Update Benchmark Dashboard

on:
push:
branches: [main]
paths:
- 'benchmarks/results/latest.json'
workflow_dispatch:

permissions:
contents: write

jobs:
generate:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}

- name: Install jq
run: sudo apt-get install -y jq

- name: Generate benchmark dashboard
run: bash scripts/generate-benchmark-dashboard.sh

- name: Commit updated dashboard
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add docs/benchmarks.md
if git diff --cached --quiet; then
echo "No changes to commit"
else
git commit -m "chore: regenerate benchmark dashboard [skip ci]"
git push
fi
68 changes: 68 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
name: CI

on:
push:
branches: [main]
pull_request:
paths:
- "Package.swift"
- "Sources/**"
- "Tests/**"
- ".github/workflows/ci.yml"

concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true

jobs:
build-test:
name: "Build & Test (Xcode ${{ matrix.xcode }})"
runs-on: macos-15
strategy:
fail-fast: true
matrix:
xcode:
- "16.2"
- "16.3"

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Select Xcode ${{ matrix.xcode }}
run: |
XCODE_PATH=$(find /Applications -maxdepth 1 -name "Xcode_${{ matrix.xcode }}*.app" | head -1)
if [ -n "$XCODE_PATH" ]; then
sudo xcode-select -s "$XCODE_PATH"
else
echo "Xcode ${{ matrix.xcode }} not found, using default"
fi
xcodebuild -version
swift --version

- name: Restore SPM cache
uses: actions/cache@v4
with:
path: .build
key: spm-${{ runner.os }}-${{ matrix.xcode }}-${{ hashFiles('Package.swift', 'Package.resolved') }}
restore-keys: |
spm-${{ runner.os }}-${{ matrix.xcode }}-
spm-${{ runner.os }}-

- name: Build (release)
run: swift build -c release

- name: Test (unit — no ANE required)
run: |
swift test \
--filter "ANETypesTests|MILGeneratorTests|CPUOpsTests|ANEGraphIRTests|ANECodegenTests|ANEPassesTests|ANEBuilderTests|ModelSupportTests|DeltaCompilationTests|LoRAAdapterTests|MigrationParityTests|EspressoGenerateTests"

lint:
name: Swift Package Lint
runs-on: macos-15
steps:
- uses: actions/checkout@v4
- name: Resolve dependencies
run: swift package resolve
- name: Show dependency graph
run: swift package show-dependencies
44 changes: 44 additions & 0 deletions .github/workflows/claude-code-review.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: Claude Code Review

on:
pull_request:
types: [opened, synchronize, ready_for_review, reopened]
# Optional: Only run on specific file changes
# paths:
# - "src/**/*.ts"
# - "src/**/*.tsx"
# - "src/**/*.js"
# - "src/**/*.jsx"

jobs:
claude-review:
# Optional: Filter by PR author
# if: |
# github.event.pull_request.user.login == 'external-contributor' ||
# github.event.pull_request.user.login == 'new-developer' ||
# github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR'

runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: read
issues: read
id-token: write

steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1

- name: Run Claude Code Review
id: claude-review
uses: anthropics/claude-code-action@v1
with:
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
plugin_marketplaces: 'https://github.com/anthropics/claude-code.git'
plugins: 'code-review@claude-code-plugins'
prompt: '/code-review:code-review ${{ github.repository }}/pull/${{ github.event.pull_request.number }}'
# See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md
# or https://code.claude.com/docs/en/cli-reference for available options

81 changes: 81 additions & 0 deletions .github/workflows/claude.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
name: Claude Code

on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
issues:
types: [opened, assigned]
pull_request_review:
types: [submitted]

jobs:
claude:
if: |
(
github.event_name == 'issue_comment' &&
contains(github.event.comment.body, '@claude') &&
(
github.event.comment.author_association == 'OWNER' ||
github.event.comment.author_association == 'MEMBER' ||
github.event.comment.author_association == 'COLLABORATOR'
)
) ||
(
github.event_name == 'pull_request_review_comment' &&
contains(github.event.comment.body, '@claude') &&
(
github.event.comment.author_association == 'OWNER' ||
github.event.comment.author_association == 'MEMBER' ||
github.event.comment.author_association == 'COLLABORATOR'
)
) ||
(
github.event_name == 'pull_request_review' &&
contains(github.event.review.body, '@claude') &&
(
github.event.review.author_association == 'OWNER' ||
github.event.review.author_association == 'MEMBER' ||
github.event.review.author_association == 'COLLABORATOR'
)
) ||
(
github.event_name == 'issues' &&
(contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')) &&
(
github.event.issue.author_association == 'OWNER' ||
github.event.issue.author_association == 'MEMBER' ||
github.event.issue.author_association == 'COLLABORATOR'
)
)
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: read
issues: read
id-token: write
actions: read # Required for Claude to read CI results on PRs
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1

- name: Run Claude Code
id: claude
uses: anthropics/claude-code-action@v1
with:
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}

# This is an optional setting that allows Claude to read CI results on PRs
additional_permissions: |
actions: read

# Optional: Give a custom prompt to Claude. If this is not specified, Claude will perform the instructions specified in the comment that tagged it.
# prompt: 'Update the pull request description to include a summary of changes.'

# Optional: Add claude_args to customize behavior and configuration
# See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md
# or https://code.claude.com/docs/en/cli-reference for available options
# claude_args: '--allowed-tools Bash(gh pr:*)'
40 changes: 40 additions & 0 deletions .github/workflows/pages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Deploy GitHub Pages

on:
push:
branches: [main]
paths:
- 'docs/**'

workflow_dispatch:

permissions:
contents: read
pages: write
id-token: write

concurrency:
group: pages
cancel-in-progress: false

jobs:
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Pages
uses: actions/configure-pages@v5

- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: docs/

- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
Loading
Loading