Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
115 commits
Select commit Hold shift + click to select a range
ee70201
feat: integrate Antigravity CLI (agy) harness support
execsumo Jun 13, 2026
dd151e9
fix: handle empty or whitespace-only configuration files in load_docu…
execsumo Jun 13, 2026
8b71aa5
style: update agy harness icon to official Antigravity CLI Full Color…
execsumo Jun 13, 2026
8f1ea70
feat: change default macOS data path to ~/.skill-manager with legacy …
execsumo Jun 13, 2026
948e38d
Merge branch 'feature/integrate-agy-harness' into feature/integrated-…
execsumo Jun 13, 2026
97b32cf
feat: implement premium light mode using warm cream and amber gold br…
execsumo Jun 13, 2026
c6c9bc2
backend: implement hooks capability and add tests
execsumo Jun 14, 2026
7313d45
frontend: implement hooks dashboard and integrate with app capability…
execsumo Jun 14, 2026
aa37e10
docs: document hooks family in README
execsumo Jun 14, 2026
5e464c1
refactor: transition hook specifications to canonical event and match…
execsumo Jun 14, 2026
89b6039
feat: implement hook mappers and config handlers for all target harne…
execsumo Jun 14, 2026
53c745d
frontend: adopt canonical hook properties in dialog forms and detail …
execsumo Jun 14, 2026
970a634
test: align existing test suites and add multi-harness integration ch…
execsumo Jun 14, 2026
e8fd120
feat: support user_prompt_submit -> PreInvocation mapping on Antigravity
execsumo Jun 14, 2026
f416568
docs: update README for full cross-harness hooks coverage
execsumo Jun 14, 2026
f81302f
docs: add CLAUDE.md with branch strategy and herdr/agy delegation
execsumo Jun 14, 2026
c5f84f4
feat(backend): implement permissions family and adapters with tests
execsumo Jun 14, 2026
0082ebc
feat(frontend): implement permissions management views, components, a…
execsumo Jun 14, 2026
59a5bdb
fix(permissions): surface unmanaged rules for review and add promote-…
execsumo Jun 14, 2026
ecaa09b
fix(hooks): surface unmanaged hooks for review and add promote-to-global
execsumo Jun 14, 2026
65ad30f
fix(sidebar): distinct Hooks icon; add Board view to MCP Servers and …
execsumo Jul 13, 2026
a740d6d
feat(harness): add Hermes Agent harness; abbreviate path displays to ~/
execsumo Jul 13, 2026
3c9beb2
feat(harness): port upstream PR #51 Hermes support; reconcile with fork
execsumo Jul 14, 2026
56bb674
docs(handoff): record Hermes upstream migration (PR #51)
execsumo Jul 14, 2026
1224eb1
docs(readme): fix duplicate Hermes cell and broken png ref
execsumo Jul 14, 2026
64d08b2
feat: introduce global asset templates and scaffold API
execsumo Jul 14, 2026
898af8b
fix: write scaffolded skills in expected legacy directory structure
execsumo Jul 14, 2026
0b54469
Merge upstream changes from origin/main and resolve conflicts for Ant…
execsumo Jul 14, 2026
9224d79
fix(merge): dedupe Hermes mapper key and README cell; drop upstream png
execsumo Jul 14, 2026
343fb9d
feat(skills): migrate skill store to package layout
execsumo Jul 14, 2026
fdae468
docs(handoff): Stage 1 merged; Stage 2 in progress
execsumo Jul 14, 2026
5f8f808
feat(agents): agents resource family with Claude compile target
execsumo Jul 14, 2026
dec09ae
feat(agents): cursor and codex compile targets with degradation reports
execsumo Jul 14, 2026
11f0c9a
docs(handoff): Stages 2-3 merged; Stage 4 UI delegated
execsumo Jul 14, 2026
076641a
feat(agents): add agents UI workspace and hire flow
execsumo Jul 14, 2026
eef00de
docs(handoff): all four Packages & Agents stages complete
execsumo Jul 14, 2026
ca2b70b
docs(readme): document Packages and Agents families
execsumo Jul 14, 2026
bdcdddf
feat(agents): add agent creation, capability management, and UI enhan…
execsumo Jul 14, 2026
9eca1a9
refactor(scan-config): manage LLM scan configurations under Settings
execsumo Jul 14, 2026
6a36ede
rename(sidebar): relabel "Needs review" nav tab to "Unmanaged"
execsumo Jul 24, 2026
21f40a9
fix scan page issues
chzh12 Jun 3, 2026
4fe1d7b
fix scan page issues
chzh12 Jun 3, 2026
d4dc3f6
Merge branch 'fix-mcp-skill-harness-cards'
execsumo Jul 24, 2026
7a1f076
refactor: flatten skill store — remove multi-package abstraction
execsumo Jul 24, 2026
3b41194
Merge branch 'delegate/cline-flatten-skill-store'
execsumo Jul 24, 2026
8bb0a14
feat(permissions,hooks): make Matrix view sole view for Permissions a…
execsumo Jul 24, 2026
6aac623
feat(permissions,hooks): convert Needs-Review pages to Matrix chrome …
execsumo Jul 24, 2026
8e2d82e
feat(views): matrix-only Skills in-use; remove LLM scan subsystem
execsumo Jul 24, 2026
ffbb132
feat(skills): Unmanaged skills → adopt matrix (Phase 2)
execsumo Jul 24, 2026
91870b8
Make Matrix the sole In-use view for MCP + Slash Commands
execsumo Jul 24, 2026
9380908
Merge: matrix-only Skills in-use + scan removal + Skills adopt-matrix
execsumo Jul 24, 2026
eacb1c5
Merge: Permissions+Hooks matrix-only in-use + adopt-matrix unmanaged
execsumo Jul 24, 2026
295b8c5
Merge: MCP+Slash matrix-only in-use
execsumo Jul 24, 2026
444409d
feat(mcp,slash-commands): render matrix table chrome for needs review…
execsumo Jul 24, 2026
72298c6
refactor(views): remove now-unused ViewModeToggle + usePersistentView…
execsumo Jul 24, 2026
e3b720c
Merge: MCP+Slash unmanaged → adopt-matrix (Phase 2)
execsumo Jul 24, 2026
0b4d2b3
chore(mcp): remove dead needs-review list/row after adopt-matrix
execsumo Jul 24, 2026
2be5fce
chore(scan): drop llm_scan_configs table and purge scan from docs
execsumo Jul 24, 2026
ed26b81
feat(skills): align unmanaged matrix with in-use + adopt-selected
execsumo Jul 24, 2026
95e2e73
UI: Align matrix column widths and add in-use subtitle
execsumo Jul 24, 2026
1aa8cbb
UI: Center align Active / Actions columns
execsumo Jul 24, 2026
6a0d41b
UI: Center Active sort button and standardize column naming
execsumo Jul 24, 2026
bef5771
UI: Actually center coverage column contents and make Hooks format co…
execsumo Jul 24, 2026
000fd94
UI: Update HooksNeedsReviewPage column widths to match Skills
execsumo Jul 24, 2026
e1c9c41
feat(ui): standardize Needs Review views and add bulk adoption
execsumo Jul 24, 2026
1819ed5
docs: plan to rebuild Agents as a normal resource family
execsumo Jul 24, 2026
b39d3ae
feat: shrink agents frontmatter and rewrite docs to drop legacy capab…
execsumo Jul 24, 2026
b44b54a
fix(mcp): restore typecheck and test green on main
execsumo Jul 24, 2026
c001816
fix(mcp): restore typecheck and test green on main
execsumo Jul 24, 2026
a722671
fix(mcp): restore typecheck and test green
execsumo Jul 24, 2026
8ec94e0
feat(agents): implement standard two-view Agents inventory
execsumo Jul 24, 2026
8febf40
feat(agents): rebuild agents as a harness family with symlink ownership
execsumo Jul 24, 2026
b0176f2
merge: agent template, scaffold, and docs cleanup (agy)
execsumo Jul 24, 2026
b8d79b7
docs: record the agents-simplify session in handoff
execsumo Jul 24, 2026
14d1544
docs: describe the new agents model properly in README
execsumo Jul 24, 2026
f3bcafc
test(agents): cover the HTTP wire contract for agent routes
execsumo Jul 24, 2026
50d260f
fix(agents): correct API paths, endpoints, error parsing, and tests
execsumo Jul 24, 2026
44d7dfc
fix(agents): make AgentAdoptConflict degrade to a 409, not a 500
execsumo Jul 24, 2026
1fb9046
fix(agents): use accurate opencode namespace in mock test fixture
execsumo Jul 24, 2026
d3e9a57
merge: rebuild Agents frontend as In Use / Needs Review (agy)
execsumo Jul 24, 2026
eebc9e5
style(agents): move AdoptConflictDialog layout into CSS
execsumo Jul 24, 2026
c2f3294
merge: rebuild Agents as a normal resource family
execsumo Jul 24, 2026
3db8efa
fix(agents): stop double-prefixing /api in the agents client
execsumo Jul 24, 2026
4d9a1d8
feat(agents): cover every agent-capable harness, derived not curated
execsumo Jul 24, 2026
60b248d
merge: agents matrix covers every agent-capable harness
execsumo Jul 24, 2026
884033c
feat(agents): full detail payload for GET /api/agents/{ref}
execsumo Jul 25, 2026
a6ab47f
feat(agents): implement agent detail modal and fix prepopulation
execsumo Jul 25, 2026
b7f489f
fix: remove err.message fallback
execsumo Jul 25, 2026
8b836ca
merge: agent detail view ported from Skills design (agy)
execsumo Jul 25, 2026
64fefb5
merge: agent detail view + full detail API payload
execsumo Jul 25, 2026
f4f28a2
feat(agents): show all frontmatter, and stop deleting what we don't p…
execsumo Jul 25, 2026
eb26ea1
fix(agents): preserve empty-string frontmatter values
execsumo Jul 25, 2026
f6a9020
docs: record frontmatter preservation and the detail view
execsumo Jul 25, 2026
b967504
fix(matrix): align the trailing column across every matrix view
execsumo Jul 25, 2026
017c112
fix(harness): make catalog order canonical, and hide disabled slash t…
execsumo Jul 25, 2026
e7c38fc
fix(slash-commands): take review matrix columns from the payload only
execsumo Jul 25, 2026
2685de6
fix(skills): validate every harness before managing a skill, not mid-…
execsumo Jul 25, 2026
4c93c0d
fix(slash-commands): resolve targets per call so Settings toggles app…
execsumo Jul 25, 2026
8768b7d
merge: canonical harness order everywhere + hide disabled slash targets
execsumo Jul 25, 2026
537edb9
fix(slash-commands): report a disabled target as disabled, not unknown
execsumo Jul 25, 2026
678693a
chore: ignore local tool state, and clear out spent scratch files
execsumo Jul 25, 2026
94dcfc7
refactor(permissions): decouple decision from applied-state; drop dea…
execsumo Jul 25, 2026
5fd25d7
merge: permissions decision/applied-state split, salvaged from the st…
execsumo Jul 25, 2026
0d071a6
docs: record why the permissions UX branch was half-merged
execsumo Jul 25, 2026
a41ddf3
fix(api): contain static serving to the dist root
execsumo Jul 25, 2026
a0d8453
feat(api): reject non-loopback hosts and cross-origin mutations
execsumo Jul 25, 2026
9f23101
chore: drop the dead scan extras, orphaned prompt data, and unused db…
execsumo Jul 25, 2026
d370370
fix(marketplace): derive the client User-Agent from the package version
execsumo Jul 25, 2026
a31c798
build(deps): bump react-router to 7.18.1 and gate CI on dependency au…
execsumo Jul 25, 2026
a78f3fc
docs: note the --allow-remote requirement, and drop the removed app d…
execsumo Jul 25, 2026
98c3417
merge: tier-1 hygiene — audit gates, loopback request guards, static-…
execsumo Jul 25, 2026
c4bd75d
docs: add RECOMMENDATIONS.md and record Tier 1 as shipped
execsumo Jul 25, 2026
09a6279
fix(build): follow string via-references in the audit gate
execsumo Jul 25, 2026
321809e
docs: drop shipped items from RECOMMENDATIONS.md and renumber
execsumo Jul 25, 2026
9fc316c
chore(ci): add Dependabot, SHA-pin actions, and a ruff lint gate
execsumo Jul 25, 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
  •  
  •  
  •  
71 changes: 71 additions & 0 deletions .delegate/launch.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
#!/bin/sh
export DELEGATE_LABEL="agy-perms-hooks"
exec 'agy' '-i' 'SPEC: Make Matrix the only In-use view for Permissions + Hooks

1. OBJECTIVE
Remove the Cards/Board view options from the Permissions In-use page and the Hooks In-use page
so the Matrix view is the sole, always-rendered view. Delete the now-dead code.

2. CONTEXT
- Repo root = your worktree CWD (a git worktree off `main`). All paths below are relative to it.
- You own ONLY these two features: `frontend/src/features/permissions/**` and
`frontend/src/features/hooks/**`. Do NOT touch any other feature, `components/`, `lib/`, or
the Python backend.
- The Matrix components ALREADY EXIST and must be kept:
`frontend/src/features/permissions/components/PermissionsMatrixView.tsx`
`frontend/src/features/hooks/components/HooksMatrixView.tsx`
- Shared files you must NOT delete or edit (the orchestrator removes them later, after all
branches merge): `frontend/src/components/ViewModeToggle.tsx`,
`frontend/src/lib/usePersistentViewMode.ts`.
- node_modules is symlinked into `frontend/node_modules` for you; npm commands work from repo root.

Files that carry the view toggle today:
Permissions page: frontend/src/features/permissions/screens/PermissionsInUsePage.tsx
hook: frontend/src/features/permissions/model/usePermissionsInUseViewMode.ts (DELETE)
dead: frontend/src/features/permissions/components/PermissionCardList.tsx (DELETE)
+ any component/i18n/test used ONLY by it
Hooks page: frontend/src/features/hooks/screens/HooksInUsePage.tsx
hook: frontend/src/features/hooks/model/useHooksInUseViewMode.ts (DELETE)
dead: frontend/src/features/hooks/components/HookCardList.tsx (DELETE)
frontend/src/features/hooks/components/board/HooksBoard.tsx (DELETE whole board/ dir)
+ any component/i18n/test used ONLY by those

Per page, do exactly this:
a. Remove the <ViewModeToggle> render, the `viewModeOptions` array, the `useXViewMode()`
call, and all `viewMode === ...` branching. Render the Matrix component unconditionally
wherever rows exist (keep the loading / error / empty-state branches intact).
b. KEEP all search + filter UI (FilterBar, any filter/pill menu) — those are NOT view modes.
If a filter was gated behind `viewMode === "cards"`, make it always shown.
c. Delete the dead view components listed above and any files (subcomponents, tests, i18n
`viewModes`/`viewModeAria` keys, unused lucide icon imports like Columns3/Grid2X2) that
become unreferenced as a result. No dead code, no unused imports may remain.
d. Delete the section'\''s `useXViewMode.ts` hook file and its test if present.

3. DEFINITION OF DONE (I will run these exact checks myself in your worktree)
- `grep -rn "ViewModeToggle" frontend/src/features/permissions frontend/src/features/hooks` → NO output
- `grep -rn "usePermissionsInUseViewMode\|useHooksInUseViewMode\|PermissionsInUseViewMode\|HooksInUseViewMode" frontend/src` → NO output
- `grep -rn "PermissionCardList\|HookCardList\|HooksBoard" frontend/src` → NO output
- `git status` shows the useXViewMode hooks and the dead components as deleted.
- `npm run typecheck` exits 0
- `npm test` passes (update/remove tests that referenced removed views; do NOT weaken unrelated tests)
- `npm run build` exits 0
- Manual read: PermissionsInUsePage.tsx and HooksInUsePage.tsx render only the Matrix view; search/filter UI preserved.

4. ESCALATION — stop and ask me (via reverse channel) instead of guessing if:
- Removing a view forces changing shared/global files outside your two features.
- A matrix component is missing an affordance the deleted card/board had and it'\''s unclear where it should live.
- A test failure implies a behavior change you'\''re unsure is intended.
- The real change is materially bigger than this spec implies.

5. REVERSE CHANNEL — to reach me, run ONE command from your worktree:
./.delegate/notify needs-input "the question or decision you need answered"
./.delegate/notify blocked "what you are stuck on"
./.delegate/notify done "summary of what you finished"
then STOP AND WAIT at your prompt — do not exit, do not continue. I will review and either
confirm or send corrections. After I reply, run `./.delegate/notify resume` before continuing.

6. OUTPUT — on finish: run `./.delegate/notify done "<summary>"`, then STOP AND WAIT. Do not exit.

7. SCOPE BOUNDARY — stay in your worktree; touch only features/permissions and features/hooks
(plus their tests). Do NOT edit ViewModeToggle.tsx / usePersistentViewMode.ts / other features /
backend. Do NOT push, open PRs, or run any git merge. Make small logical commits on your branch.' '--add-dir' '/Users/hgill/projects/skill-manager-worktrees/agy-perms-hooks' '--dangerously-skip-permissions' '--model' 'gemini-3.1-pro-high'
55 changes: 55 additions & 0 deletions .delegate/notify
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
#!/bin/sh
# notify — reverse-channel helper for a DELEGATED agent. Copied into each
# delegate's worktree as ./.delegate/notify by `spawn`. Run it from the worktree.
#
# Usage:
# ./.delegate/notify needs-input "the question or decision you need answered"
# ./.delegate/notify blocked "what you are stuck on"
# ./.delegate/notify done "summary of what you finished (orchestrator re-verifies)"
# ./.delegate/notify resume # AFTER the orchestrator replies, before you continue working
#
# It does two things so the orchestrator both wakes instantly AND gets full content:
# 1. sets your herdr agent status (event-driven, ~ms wake) via report-agent
# 2. writes the full message to ./.delegate/signal (the orchestrator polls this)
# herdr injects $HERDR_PANE_ID into your pane; $DELEGATE_LABEL is set by spawn.
#
# IMPORTANT: a reported `blocked` is sticky and suppresses herdr's real detection
# until cleared. After the orchestrator answers, run `notify resume` (or it will
# sit falsely blocked forever).

set -u

kind="${1:-}"
[ "$#" -gt 0 ] && shift
msg="${*:-}"

here="$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)" # the .delegate dir
sigfile="$here/signal"
label="${DELEGATE_LABEL:-delegate}"
pane="${HERDR_PANE_ID:-}"

report() { # report <state> <custom-status>
[ -n "$pane" ] || return 0
herdr pane report-agent "$pane" --source delegate-protocol --agent "$label" \
--state "$1" --custom-status "$2" >/dev/null 2>&1 || true
}

headline() { printf '%s' "$1" | tr '\n' ' ' | cut -c1-72; }

case "$kind" in
needs-input)
report blocked "NEEDS-INPUT: $(headline "$msg")"
printf '<<DELEGATE:NEEDS-INPUT>> %s\n' "$msg" > "$sigfile" ;;
blocked)
report blocked "BLOCKED: $(headline "$msg")"
printf '<<DELEGATE:BLOCKED>> %s\n' "$msg" > "$sigfile" ;;
done)
# no reportable `done` state; completion rides the file + quiescence
printf '<<DELEGATE:DONE>> %s\n' "$msg" > "$sigfile" ;;
resume)
report working "resumed"
: > "$sigfile" ;;
*)
echo "usage: notify {needs-input|blocked|done|resume} [message]" >&2
exit 2 ;;
esac
1 change: 1 addition & 0 deletions .delegate/signal
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<<DELEGATE:DONE>> 62 test files passed, 263 tests passed
41 changes: 41 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
version: 2
updates:
# Frontend (and dev tooling) JavaScript dependencies.
- package-ecosystem: npm
directory: /
schedule:
interval: weekly
open-pull-requests-limit: 10
groups:
react:
patterns:
- "react"
- "react-dom"
- "@types/react"
- "@types/react-dom"
radix:
patterns:
- "@radix-ui/*"
testing:
patterns:
- "@testing-library/*"
- "vitest"
- "jsdom"
commit-message:
prefix: chore(deps)
# Python runtime + build dependencies.
- package-ecosystem: pip
directory: /
schedule:
interval: weekly
open-pull-requests-limit: 10
commit-message:
prefix: chore(deps)
# GitHub Actions used by the CI and Release workflows.
- package-ecosystem: github-actions
directory: /
schedule:
interval: weekly
open-pull-requests-limit: 10
commit-message:
prefix: chore(ci)
32 changes: 23 additions & 9 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,9 @@ jobs:
- "3.13"
- "3.14"
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6

- uses: actions/setup-python@v6
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
with:
python-version: ${{ matrix.python-version }}

Expand All @@ -48,19 +48,30 @@ jobs:
./.venv/bin/python -m pip install --upgrade pip
./.venv/bin/pip install -r requirements.txt

- name: Install dev dependencies
run: ./.venv/bin/pip install -r requirements-dev.txt

- name: Backend lint
run: ./.venv/bin/ruff check skill_manager tests

- name: Python dependency audit
run: |
./.venv/bin/pip install pip-audit
./.venv/bin/pip-audit

- name: Backend compatibility tests
run: bash scripts/test_backend.sh

frontend-validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6

- uses: actions/setup-python@v6
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
with:
python-version: "3.11"

- uses: actions/setup-node@v6
- uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6
with:
node-version: "20"
cache: "npm"
Expand All @@ -73,6 +84,9 @@ jobs:
- name: Install Node dependencies
run: npm ci

- name: Dependency audit
run: npm run audit:check

- name: Check version sync
run: ./.venv/bin/python scripts/sync_version.py --check

Expand Down Expand Up @@ -115,13 +129,13 @@ jobs:
runner: ubuntu-24.04-arm
homebrew: false
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6

- uses: actions/setup-python@v6
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
with:
python-version: "3.11"

- uses: actions/setup-node@v6
- uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6
with:
node-version: "20"
cache: "npm"
Expand Down Expand Up @@ -155,7 +169,7 @@ jobs:
bash scripts/validate_homebrew_formula.sh "$VERSION" "$ARTIFACT"

- name: Upload packaged artifacts
uses: actions/upload-artifact@v7
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: package-smoke-${{ matrix.target }}
path: .artifacts/release/*
28 changes: 14 additions & 14 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,14 @@ jobs:
runner: ubuntu-24.04-arm
homebrew: false
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6

- uses: actions/setup-python@v6
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
with:
# Release packaging stays on one stable builder version.
python-version: "3.11"

- uses: actions/setup-node@v6
- uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6
with:
node-version: "20"
cache: "npm"
Expand Down Expand Up @@ -73,7 +73,7 @@ jobs:
bash scripts/validate_homebrew_formula.sh "$VERSION" "$ARTIFACT"

- name: Upload packaged artifacts
uses: actions/upload-artifact@v7
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: release-${{ matrix.target }}
path: .artifacts/release/*
Expand All @@ -83,16 +83,16 @@ jobs:
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/v')
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6

- uses: actions/download-artifact@v8
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
with:
path: .artifacts/release
pattern: release-*
merge-multiple: true

- name: Publish GitHub Release
uses: softprops/action-gh-release@v2
uses: softprops/action-gh-release@3bb12739c298aeb8a4eeaf626c5b8d85266b0e65 # v2
with:
files: .artifacts/release/*

Expand All @@ -101,14 +101,14 @@ jobs:
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/v')
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6

- uses: actions/setup-python@v6
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
with:
# Publishing tooling stays pinned even though runtime compatibility is validated in CI.
python-version: "3.11"

- uses: actions/setup-node@v6
- uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6
with:
node-version: "20"
registry-url: "https://registry.npmjs.org"
Expand All @@ -133,14 +133,14 @@ jobs:
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/v')
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6

- uses: actions/setup-python@v6
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
with:
# Formula rendering is deterministic on the same stable builder version.
python-version: "3.11"

- uses: actions/download-artifact@v8
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
with:
path: .artifacts/release
pattern: release-*
Expand All @@ -167,7 +167,7 @@ jobs:
run: ruby -c .artifacts/release/skill-manager.rb

- name: Upload Homebrew formula artifact
uses: actions/upload-artifact@v7
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: homebrew-formula
path: .artifacts/release/skill-manager.rb
Expand Down
12 changes: 12 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,15 @@ packaging/npm/vendor/
task_plan.md
findings.md
progress.md

# macOS
.DS_Store

# Local tool state — machine-specific, expensive to rebuild, never shared
.codegraph/
.rtk/

# Per-agent instruction files generated by local tooling (rtk init and friends).
# Shared working agreements belong in CLAUDE.md; these do not.
.clinerules
.agents/
Loading