Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
207 commits
Select commit Hold shift + click to select a range
eb9ea98
feat: add seo-keyword-generator skill
jsifalda Mar 8, 2026
c3f15c4
Merge pull request #7 from craftengineer/feat/seo-keyword-generator
jsifalda Mar 8, 2026
a044266
rename summarise skill to 'Summarise URL'
jsifalda Mar 8, 2026
c43535a
rename folder summarise -> summarise-url
jsifalda Mar 8, 2026
b4e39d5
Merge pull request #8 from craftengineer/rename-skill-summarise
jsifalda Mar 8, 2026
09b7f31
chore: add ts validation rule
jsifalda Mar 16, 2026
b9b5fb0
feat: update general rules
jsifalda Mar 21, 2026
e31b697
feat: add skill to implement ga tracking with cookies banner into nextjs
jsifalda Mar 21, 2026
b84ab3a
fix: minor fixes for GA analytics
jsifalda Mar 21, 2026
3e374e6
feat: add obsidian-task-extractor skill
jsifalda Mar 22, 2026
3477338
Merge pull request #10 from craftengineer/feat/add-obsidian-task-extr…
jsifalda Mar 22, 2026
428946d
feat: woridng changes
jsifalda Mar 27, 2026
328e76a
feat: add skill to check claude code version and compare with the lat…
jsifalda Mar 27, 2026
1ba49e9
feat: init root context/instructions
jsifalda Mar 27, 2026
91dfdb4
feat: add skill to sync obsidian skills from the remote
jsifalda Mar 27, 2026
ff0fcb4
feat: add council skill (Karpathy LLM Council method)
jsifalda Mar 31, 2026
9a47285
Update skills/council/SKILL.md
jsifalda Apr 2, 2026
2eac53d
Merge pull request #11 from craftengineer/feat/add-council-skill
jsifalda Apr 2, 2026
6980088
feat: add create-implementation-plan skill with file output and conti…
jsifalda Apr 9, 2026
f656a39
Merge pull request #12 from craftengineer/feature/create-implementati…
jsifalda Apr 9, 2026
4c8c11b
feat: add create-codebase-docs skill replacing educator rule
jsifalda Apr 12, 2026
1e92e6d
Merge pull request #13 from jsifalda/feat/create-codebase-docs-skill
jsifalda Apr 12, 2026
41854b5
feat: add changelog-setup skill for per-session changelog bootstrapping
jsifalda Apr 12, 2026
642017a
Merge pull request #14 from jsifalda/feat/changelog-setup-skill
jsifalda Apr 12, 2026
8bb9628
feat(rules): add mandatory TDD guidelines to general.md
jsifalda Apr 14, 2026
6e61c6c
Update general.md
jsifalda Apr 14, 2026
7d49558
Merge pull request #15 from craftengineer/feat/add-tdd-rule
jsifalda Apr 14, 2026
c018914
feat: cleaning changelog rules, and token cost optimalization
jsifalda Apr 17, 2026
f3fddcd
feat: add highlight-key-takeaways skill
jsifalda Apr 20, 2026
bc88239
Merge pull request #16 from jsifalda/feat/highlight-key-takeaways-skill
jsifalda Apr 20, 2026
72afb19
feat: rename skill-creator to create-skill and add article-based guid…
jsifalda Apr 20, 2026
1f942fd
refactor: drop Step 7 retirement guidance from create-skill
jsifalda Apr 20, 2026
4a4bbdf
Merge pull request #17 from jsifalda/feat/create-skill-improvements
jsifalda Apr 20, 2026
8699514
feat: add summarise-text skill
jsifalda Apr 20, 2026
c6d3686
Merge pull request #18 from jsifalda/feat/summarise-text-skill
jsifalda Apr 20, 2026
03cad51
feat: add deep-research skill
jsifalda Apr 21, 2026
c51fea3
feat: add skill to work with apple mail in secure way
jsifalda May 2, 2026
6140cbf
feat: add skill to create landing page copy
jsifalda May 2, 2026
5fa4f6b
Merge pull request #19 from jsifalda/feature/landing-copy
jsifalda May 2, 2026
b744729
feat: add write-like-human skill
jsifalda May 6, 2026
b841e7b
Merge pull request #20 from jsifalda/feat/write-like-human-skill
jsifalda May 6, 2026
431d6aa
refactor: write deep-research output to project's ./documents/ folder
jsifalda May 6, 2026
f2a91c2
Merge pull request #21 from jsifalda/refactor/deep-research-project-o…
jsifalda May 6, 2026
a0e8974
feat: better global installation rules
jsifalda May 11, 2026
6a5a627
feat: code review as part of verification protocol
jsifalda May 11, 2026
7dc9f70
feat: improve decision model for the highlights
jsifalda May 15, 2026
26babe9
feat: better self learning instructions
jsifalda May 15, 2026
2cbbc20
feat: new skills
jsifalda May 18, 2026
ba646aa
feat: default to pnpm
jsifalda May 20, 2026
8ee1c04
fix: max description lenght
jsifalda May 20, 2026
80dff5b
feat: update structure of the project
jsifalda May 23, 2026
3c49cb4
feat: add rules for instructions to be universal
jsifalda May 23, 2026
70a05f3
refactor: drop hardcoded paths from distill-persona skill
jsifalda May 23, 2026
ed6a767
feat: add user-scenarios-setup skill
jsifalda May 23, 2026
b60308a
feat: add ship-pr skill
jsifalda May 23, 2026
4107282
Merge pull request #23 from jsifalda/feat/ship-pr-skill
jsifalda May 23, 2026
b87b486
feat: make /ship-pr manual only
jsifalda May 24, 2026
a62a272
feat: better scenarios format
jsifalda May 26, 2026
2dadb5a
fix: corect copilot parsing
jsifalda May 26, 2026
77c17d2
feat: add validation of skills before commit
jsifalda May 26, 2026
ec03383
feat: add grill me skill
jsifalda May 28, 2026
90e1429
feat: add claude-allow-home skill
jsifalda Jun 1, 2026
3bd919c
Merge pull request #24 from craftengineer/feat/add-claude-allow-home-…
jsifalda Jun 1, 2026
53476be
feat(ship-pr): add GitHub fork fallback when push is denied
jsifalda Jun 3, 2026
7b35d70
Merge pull request #25 from jsifalda/feat/ship-pr-fork-fallback
jsifalda Jun 3, 2026
0a8c06e
feat: add founder-thinking-mode and first-principles-mode skills
jsifalda Jun 5, 2026
4c7543a
Merge pull request #26 from jsifalda/feat/add-thinking-mode-skills
jsifalda Jun 5, 2026
52fde31
feat: add setup-skills-autorefresh skill
jsifalda Jun 5, 2026
3d82958
Merge pull request #27 from jsifalda/feat/setup-skills-autorefresh
jsifalda Jun 5, 2026
76b9530
feat: expose repo skills as project-level skills via symlink
jsifalda Jun 5, 2026
e0e5ed8
docs: list all skills in README and add list-upkeep rule
jsifalda Jun 5, 2026
16be363
Merge pull request #28 from jsifalda/docs/readme-skills-list
jsifalda Jun 5, 2026
49574b1
feat: better framing of memory loading
jsifalda Jun 8, 2026
8788314
feat: add radical candor feedback skill
jsifalda Jun 11, 2026
6d0b666
feat: add rewrite skill (DeepL Write clone)
jsifalda Jun 11, 2026
2093c20
Merge pull request #29 from jsifalda/feat/add-rewrite-skill
jsifalda Jun 11, 2026
e2fa176
feat: add qmd project skill
jsifalda Jun 13, 2026
8fcc8c5
feat: create skill to ask questions inside qmd project
jsifalda Jun 13, 2026
ec03b31
feat: improve skill-creator - dont mention another skills without con…
jsifalda Jun 13, 2026
a59b55f
feat: gate changelog-setup entries to real changes only
jsifalda Jun 14, 2026
6a16574
Merge pull request #30 from jsifalda/feat/gate-changelog-entries
jsifalda Jun 14, 2026
b28eebe
feat: rewrite Improve mode applies write-like-human first
jsifalda Jun 16, 2026
f970baa
Merge pull request #31 from jsifalda/feat/rewrite-applies-write-like-…
jsifalda Jun 16, 2026
f7ca601
feat: better protection againts global install
jsifalda Jun 17, 2026
2601d81
feat: dont allow destructive actions
jsifalda Jun 17, 2026
528a715
feat: better commit messages
jsifalda Jun 17, 2026
0b62609
fix: correct name for summarise url skill
jsifalda Jun 17, 2026
cf48e43
docs: autocommit changelog entries with related changes
jsifalda Jun 17, 2026
327ed2f
docs: backfill changelog entries for prior sessions
jsifalda Jun 17, 2026
8cb5175
refactor: rename changelog-setup skill to setup-changelog
jsifalda Jun 18, 2026
f1392db
Merge pull request #32 from jsifalda/worktree-polymorphic-snacking-fairy
jsifalda Jun 18, 2026
eada077
feat: add setup-adrs skill
jsifalda Jun 18, 2026
a19b75a
Merge remote-tracking branch 'origin/main' into feat/add-setup-adrs-s…
jsifalda Jun 18, 2026
18a872f
Merge pull request #33 from jsifalda/feat/add-setup-adrs-skill
jsifalda Jun 18, 2026
7f04772
feat(setup-adrs): draft ARCHITECTURE.md from existing code
jsifalda Jun 18, 2026
7ef500c
feat(setup-adrs): smarter agent-file targeting with CLAUDE.md symlink
jsifalda Jun 18, 2026
a9b62b8
Merge pull request #34 from jsifalda/feat/add-setup-adrs-skill
jsifalda Jun 18, 2026
f5c3d1c
chore: drop default Test plan from MR/PR descriptions
jsifalda Jun 19, 2026
7611f57
Merge pull request #35 from jsifalda/chore/drop-pr-test-plan
jsifalda Jun 19, 2026
ee59928
chore: sync obsidian skills from upstream
jsifalda Jun 19, 2026
914b0cc
Merge pull request #36 from jsifalda/chore/sync-obsidian-skills
jsifalda Jun 19, 2026
8f78f79
feat: add setup-aiengineering skill
jsifalda Jun 19, 2026
d0b72f5
Merge pull request #37 from jsifalda/feat/setup-aiengineering-skill
jsifalda Jun 19, 2026
df8b1ad
feat: add sync-mattpocock-skills skill
jsifalda Jun 20, 2026
906011e
Merge pull request #38 from jsifalda/feat/sync-mattpocock-skills
jsifalda Jun 20, 2026
759e7e8
feat: make manual-only skills slash-invocation only
jsifalda Jun 20, 2026
bbfdc2d
Merge remote-tracking branch 'origin/main' into worktree-glimmering-l…
jsifalda Jun 20, 2026
4ae33d8
Merge pull request #39 from jsifalda/worktree-glimmering-launching-ha…
jsifalda Jun 20, 2026
8538d94
refactor: rename user-scenarios-setup skill to setup-user-scenarios
jsifalda Jun 20, 2026
a211134
Merge pull request #40 from jsifalda/worktree-snappy-purring-moon
jsifalda Jun 20, 2026
578c5df
feat: add agent-team workflow skills (writer/reviewer/tester/ship)
jsifalda Jun 20, 2026
1de9af1
refactor: apply author's original prompts to agent-team skills
jsifalda Jun 20, 2026
512e3c6
feat(team-ship): scaffold agent territories into project rules
jsifalda Jun 20, 2026
f2bd80f
docs: credit source of agent-team skills
jsifalda Jun 20, 2026
5d9ed45
Merge pull request #41 from jsifalda/worktree-abstract-weaving-kettle
jsifalda Jun 20, 2026
ceada19
feat: add persona-luca skill
jsifalda Jun 23, 2026
1bdab99
Merge pull request #42 from jsifalda/feat/persona-luca
jsifalda Jun 23, 2026
918d75e
feat: add persona-levelsio skill
jsifalda Jun 23, 2026
4f658be
Merge pull request #43 from jsifalda/feat/persona-levelsio
jsifalda Jun 23, 2026
f277718
feat: self-assign new PR/MR in ship-pr skill
jsifalda Jun 24, 2026
1d7fbd6
fix: normalize glab self-assign lookup to empty on failure
jsifalda Jun 24, 2026
72644b0
Merge pull request #44 from jsifalda/feat/ship-pr-self-assign
jsifalda Jun 24, 2026
e89bcbb
feat: add distill-notes skill
jsifalda Jun 24, 2026
6d185a7
Merge pull request #45 from jsifalda/feat/distill-notes-skill
jsifalda Jun 24, 2026
49e5a17
feat: add distill-notes-v2 skill for mixed fact and heuristic notes
jsifalda Jun 24, 2026
29b7432
Merge pull request #46 from jsifalda/feat/distill-notes-v2-skill
jsifalda Jun 24, 2026
f25a303
feat: add fidelity guardrails to distill-notes-v2 skill
jsifalda Jun 24, 2026
5be4da5
Merge pull request #47 from jsifalda/feat/distill-notes-v2-guardrails
jsifalda Jun 24, 2026
bf3f635
feat: add apple-mail-thread-export skill
jsifalda Jun 25, 2026
c4259d0
chore: ignore agent worktrees
jsifalda Jun 25, 2026
5465b58
Merge pull request #48 from jsifalda/feat/apple-mail-thread-export
jsifalda Jun 25, 2026
4696d93
fix: ship-pr self-assigns GitLab MRs reliably
jsifalda Jun 25, 2026
18276cf
Merge pull request #49 from jsifalda/docs/reddit-promotion-subreddits
jsifalda Jun 25, 2026
bda8425
feat: add opusplan skill for per-task model routing
jsifalda Jun 25, 2026
6d6c9b1
Merge pull request #50 from jsifalda/feat/opusplan-skill
jsifalda Jun 25, 2026
24d3189
refactor: rename opusplan skill to op
jsifalda Jun 25, 2026
e424247
Merge pull request #51 from jsifalda/refactor/rename-opusplan-to-op
jsifalda Jun 25, 2026
4b48254
refactor: make distill-notes skills ask before saving a file
jsifalda Jun 25, 2026
97c2c45
Merge pull request #52 from jsifalda/refactor/distill-ask-before-save
jsifalda Jun 25, 2026
320022a
feat: honor file deletions in apple-mail-thread-export
jsifalda Jun 25, 2026
9a99942
Merge branch 'main' into feat/honor-deletions-export-threads
jsifalda Jun 25, 2026
279c0ed
Merge pull request #53 from jsifalda/feat/honor-deletions-export-threads
jsifalda Jun 25, 2026
05e93fc
feat: allow model invocation of op skill
jsifalda Jun 26, 2026
ee74250
Merge pull request #54 from jsifalda/feat/op-model-invocable
jsifalda Jun 26, 2026
9539dc8
feat: add indie-hacker-wrapup skill
jsifalda Jun 26, 2026
7e089e3
Merge pull request #55 from jsifalda/feat/add-indie-hacker-wrapup-skill
jsifalda Jun 26, 2026
d5756e5
feat: add setup-rtk skill
jsifalda Jun 27, 2026
2b7bfba
Merge pull request #56 from jsifalda/feat/add-setup-rtk-skill
jsifalda Jun 27, 2026
62ef237
feat: setup-rtk falls back to official install script when Homebrew a…
jsifalda Jun 27, 2026
3f101f3
feat: allow model invocation of indie-hacker-wrapup skill
jsifalda Jun 27, 2026
bc241a3
Merge pull request #57 from jsifalda/feat/setup-rtk-install-fallback
jsifalda Jun 27, 2026
aa482cb
docs: add browser automation rules for bot-walled sites
jsifalda Jun 27, 2026
4c6c5bb
Merge pull request #58 from jsifalda/docs/browser-automation-bot-wall…
jsifalda Jun 27, 2026
eedc0b6
feat: indie-hacker-wrapup runs directly without upfront ask
jsifalda Jun 28, 2026
b1119b7
Merge pull request #59 from jsifalda/feat/indie-wrapup-no-ask
jsifalda Jun 28, 2026
97e98a0
feat: add model-routing verifier to op skill
jsifalda Jun 28, 2026
571a28f
Merge pull request #60 from jsifalda/feat/op-self-verify-models
jsifalda Jun 28, 2026
51e2999
feat: add goal-breakdown skill
jsifalda Jun 28, 2026
52db68d
feat: add ship-v1 skill
jsifalda Jun 28, 2026
05df8fb
Merge pull request #61 from jsifalda/feat/goal-breakdown-skill
jsifalda Jun 28, 2026
35c6b61
docs: link README skills table to each SKILL.md
jsifalda Jun 29, 2026
4eeed61
Merge pull request #62 from jsifalda/docs/readme-skill-links
jsifalda Jun 29, 2026
57dbd89
feat: add .worktreeinclude handling to setup-aiengineering worktree m…
jsifalda Jun 29, 2026
1b710fc
Merge pull request #63 from jsifalda/feat/setup-aiengineering-worktre…
jsifalda Jun 29, 2026
2fa2cac
feat: give indie-hacker-wrapup a cross-session memory of suggested an…
jsifalda Jun 29, 2026
3b0e30e
feat: add better-plan chained planning skill
jsifalda Jun 29, 2026
08b5f4e
Merge pull request #64 from jsifalda/feat/better-plan-skill
jsifalda Jun 29, 2026
f62842a
docs(rules): require grepping callers + research before editing
jsifalda Jun 30, 2026
8e3c4cc
chore(skills): remove claude-version-check to cut token load
jsifalda Jun 30, 2026
d427358
docs: declare skill dependencies in README Skills table
jsifalda Jun 30, 2026
34782c0
Merge pull request #65 from jsifalda/docs/skill-deps-column
jsifalda Jun 30, 2026
80c1ee4
feat(better-plan): add prompt-enhancer preface and run recap
jsifalda Jul 1, 2026
37dcb86
Merge pull request #66 from jsifalda/feat/better-plan-enhance-recap
jsifalda Jul 1, 2026
e31c100
fix: make op skill model references version-agnostic
jsifalda Jul 1, 2026
435dcd7
refactor: simplify op's verify-models.py, drop its test suite
jsifalda Jul 1, 2026
4b35d76
fix: drop realistic-looking version string from op skill's anti-patte…
jsifalda Jul 2, 2026
a8601ec
Merge pull request #67 from jsifalda/fix/op-skill-drop-example-model-…
jsifalda Jul 2, 2026
77d8265
feat(indie-hacker-wrapup): mine product+process angles, add resonance…
jsifalda Jul 3, 2026
aacebe1
Merge pull request #68 from jsifalda/feat/indie-wrapup-better-angles
jsifalda Jul 3, 2026
82ca106
refactor: rename youtube-video-finder skill to yt-video-finder
jsifalda Jul 3, 2026
171f1dd
Merge pull request #69 from jsifalda/refactor/rename-yt-video-finder
jsifalda Jul 3, 2026
dcd7d87
feat(yt-video-finder): link every mentioned video in the report
jsifalda Jul 3, 2026
4069650
refactor(prd-creator): realign PRD template to best practices
jsifalda Jul 3, 2026
8d83325
refactor(prd-creator): trim template to lean indie PRD
jsifalda Jul 3, 2026
26fdaec
Merge pull request #70 from jsifalda/refactor/prd-creator-best-practices
jsifalda Jul 3, 2026
dad83ce
feat(setup-aiengineering): add opt-in PRD gate module
jsifalda Jul 3, 2026
69b70c2
feat: add setup-notifications skill
jsifalda Jul 4, 2026
a35638d
refactor(indie-hacker-wrapup): load write-like-human skill before dra…
jsifalda Jul 5, 2026
f2c7cdc
Merge pull request #73 from jsifalda/refactor/wrapup-load-write-like-…
jsifalda Jul 5, 2026
83d3223
Merge pull request #71 from jsifalda/feat/setup-aiengineering-prd-gate
jsifalda Jul 6, 2026
20d4b0f
Merge pull request #72 from craftengineer/feat/add-setup-notification…
jsifalda Jul 6, 2026
baa824f
refactor(prd-creator): make generated PRDs terser and skimmable
jsifalda Jul 8, 2026
94516b7
feat(prd-creator): add optional grill-me pressure-test loop
jsifalda Jul 8, 2026
427f71c
Merge pull request #74 from jsifalda/refactor/prd-creator-terser-prds
jsifalda Jul 8, 2026
f784988
feat(setup-aiengineering): add docs-alignment gate to verification pr…
jsifalda Jul 8, 2026
bb81c23
Merge pull request #75 from jsifalda/feat/setup-aiengineering-docs-al…
jsifalda Jul 8, 2026
334761d
feat: add create-product-vision skill
jsifalda Jul 8, 2026
06e9cda
feat(create-product-vision): offer tagline in three wordings
jsifalda Jul 8, 2026
97a689b
Merge pull request #76 from jsifalda/feat/add-create-product-vision-s…
jsifalda Jul 8, 2026
a82de35
feat: add pdf-to-md skill
jsifalda Jul 10, 2026
50f5319
Merge pull request #77 from jsifalda/feat/add-pdf-to-md-skill
jsifalda Jul 10, 2026
a415c7b
feat: add bounded verification loop to write-like-human skill
jsifalda Jul 10, 2026
ec75320
Merge pull request #78 from jsifalda/feat/write-like-human-verify-loop
jsifalda Jul 10, 2026
0108044
"Claude PR Assistant workflow"
jsifalda Jul 10, 2026
d335e5e
"Claude Code Review workflow"
jsifalda Jul 10, 2026
749ba26
Merge pull request #79 from jsifalda/add-claude-github-actions-178371…
jsifalda Jul 10, 2026
c0a04c6
feat(setup-notifications): default to Notification-only, make Stop op…
jsifalda Jul 11, 2026
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
1 change: 1 addition & 0 deletions .claude/skills
50 changes: 50 additions & 0 deletions .githooks/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
#!/usr/bin/env bash
# Tracked pre-commit hook for the instructions repo.
# Activated by: bash scripts/install-hooks.sh (sets core.hooksPath=.githooks)
# Bypass: git commit --no-verify (intentional escape hatch; do not use to hide leaks)

REPO_ROOT="$(git rev-parse --show-toplevel)"
SCANNER="${REPO_ROOT}/scripts/check-universality.sh"
SKILL_VALIDATOR="${REPO_ROOT}/skills/create-skill/scripts/quick_validate.py"

[[ -x "$SCANNER" ]] || { echo "pre-commit: $SCANNER not found or not executable" >&2; exit 1; }

# Collect staged paths (added/copied/modified) once for both scanners.
# Use a `while read` loop because macOS ships bash 3.2 which lacks `mapfile`.
abs=()
rel=()
while IFS= read -r f; do
[[ -z "$f" ]] && continue
abs+=("${REPO_ROOT}/${f}")
rel+=("$f")
done < <(git diff --cached --name-only --diff-filter=ACM)

[[ ${#abs[@]} -eq 0 ]] && exit 0

"$SCANNER" "${abs[@]}" || exit 1

# Validate any staged skills/<name>/SKILL.md against the agentskills.io spec
# (YAML frontmatter parses, description ≤1024 chars, etc.).
if [[ -f "$SKILL_VALIDATOR" ]]; then
fail=0
seen_dirs=""
for f in "${rel[@]}"; do
if [[ "$f" =~ ^skills/[^/]+/SKILL\.md$ ]]; then
skill_dir="${REPO_ROOT}/$(dirname "$f")"
# Avoid re-validating the same directory if multiple files in it are staged
case ":$seen_dirs:" in
*:"$skill_dir":*) continue ;;
esac
seen_dirs="$seen_dirs:$skill_dir"
if ! python3 "$SKILL_VALIDATOR" "$skill_dir"; then
echo "pre-commit: skill validation failed for $f" >&2
fail=1
fi
fi
done
[[ $fail -ne 0 ]] && exit 1
fi

# Explicit success exit — without this, the [[ … ]] && exit 1 above leaks its
# false-condition exit status (1) as the script's final status on the happy path.
exit 0
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:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
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

50 changes: 50 additions & 0 deletions .github/workflows/claude.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
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_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
(github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
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:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

# 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 *)'

4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
_tasks
_prds
_tickets
changelog.md
changelog.md
scripts/universality-denylist.txt
.claude/worktrees/
1 change: 1 addition & 0 deletions AGENTS.md
109 changes: 109 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
## Project Overview

Personal monorepo of AI-tool instructions: rules, skills, and slash commands used by Claude Code, Copilot CLI, Gemini CLI, Cursor, and any other agent that reads markdown. Tool-agnostic where possible.

## Repository Layout

- `rules/` — always-apply rule files (frontmatter `type: "always_apply"`): `general.md` (core), `builder.md` (new-app defaults), `design.md` (frontend aesthetics).
- `skills/` — agent skills following [agentskills.io](https://agentskills.io/specification). Each subdir has a `SKILL.md`.
- `gemini-cli/commands/` — `.toml` slash commands for Gemini CLI (`description` + `prompt` with `{{args}}`).
- `create-prd.md`, `generate-tasks.md`, `process-task-list.md`, `feature-request.md` — standalone PRD workflow prompts (the original AI Dev Tasks pipeline). Outputs to `_prds/`, `_tasks/`, `_tickets/` (gitignored).
- `AGENTS.md` — symlink to `CLAUDE.md`.
- `changelog.md` — manually-maintained log; format: `YYYYMMDDTHHMM — Title` with `Why / What / How` bullets.

## Skills Sync

Skills are auto-synced into `~/.claude/skills/` by a `SessionStart` hook. The canonical hook script lives in this repo at `skills/setup-skills-autorefresh/scripts/sync-skills.js`; it symlinks every skill from a **source folder passed as an argument** into `~/.claude/skills/` and prunes removed ones. Install/register it on a machine with the `setup-skills-autorefresh` skill (`bash skills/setup-skills-autorefresh/scripts/install.sh <skills-dir>`), which bakes the source folder into the hook command in `~/.claude/settings.json`. A parallel script at `~/.copilot/hooks/sync-skills.js` copies (not symlinks, due to a Copilot CLI bug) skills into `~/.copilot/skills/`. The hook script is the source of truth — read it for sync behaviour.

## Conventions

- **Skill files** follow the [agentskills.io](https://agentskills.io/specification) spec. Frontmatter requires at least `name` + `description`.
- **Skill validation**: run `python skills/create-skill/scripts/quick_validate.py skills/<your-skill>/` before committing. The pre-commit hook runs the same validator on every staged `SKILL.md`. Two parser-strictness rules to know (both silently pass Claude Code but break Copilot CLI):
- `description` must not contain `": "` (colon + space) — YAML plain-scalar terminator. Use ` — ` or `, ` instead.
- `description` must be ≤1024 chars (target ≤950 for headroom).
- **Rule files** use `type: "always_apply"` frontmatter when meant to load on every session.
- **Gemini commands** are `.toml` with `description` and `prompt` fields. Use `{{args}}` for user-supplied input.
- **README lists are manually maintained — keep them in sync.** The `## Skills` table in `README.md` has one row per skill with three columns: skill name, one-line summary, and `Depends on`. When you add, remove, or rename a skill under `skills/`, update that table in the same change — add/remove/rename the row (skill name + a one-line summary drawn from its `SKILL.md` `description`) **and fill its `Depends on` cell**: list every other repo skill this one invokes/requires to function, or `—` if none. Disambiguation pointers ("use X instead") and sync-provenance (which upstream repo a skill came from) are not dependencies — leave the cell `—`. Likewise, when you add or remove a `gemini-cli/commands/*.toml`, update the "Current commands" list in `README.md`. There is no generator — drift only stays out if every skill/command change touches the README too.
- **New skills → consider `setup-aiengineering`.** When you add a skill under `skills/`, ask the user one question: is this a repo-bootstrapping or engineering-standards concern a project should adopt as part of its baseline setup (like ADRs, changelog, verification gates)? Most skills are not. Content, writing, research, persona, and one-off tool skills answer no and move on. If yes, fold it into `skills/setup-aiengineering/SKILL.md` as a module:
- Add a row to its `## Modules` table with the delivery type: **inject** (a policy block → add a `references/<name>.md`, substitute placeholders in Step 5), **delegate** (it is its own `setup-*` skill → invoke in Step 6), or **scaffold** (copies a file or hook → Step 7).
- Add it to the Step 4 module menu (default-selected) so users can opt out per project.
- Wire it into the matching step (5, 6, or 7) and add it to the Step 8 report line.
- Re-run `python skills/create-skill/scripts/quick_validate.py skills/setup-aiengineering/` after editing.

## Key Rules

- **Simplicity first**: minimal code changes, no side effects.
- **No laziness**: find root causes, senior developer standards.
- **Self-improvement loop**: after any correction, learn from it, be proactive.
- **Plan mode**: enter plan mode for any non-trivial task (3+ steps).
- **Conventional commits**: `feat:`, `fix:`, `refactor:`, etc.

## Restrictions

- Never push to remote git unless user explicitly says to.
- Never install global dependencies.

## Universality requirement

This repo is **public and reusable**. Every file added here — skill, rule, script, command — must work for any reader without modification. No personal data, secrets, employer names, internal URLs, or hardcoded identities. If something is machine- or person-specific, take it from an env var, a runtime prompt, or the agent's private memory — not from a file checked into this tree.

- Full policy with examples: [rules/universality.md](rules/universality.md).
- Activate the pre-commit scanner once per clone: `bash scripts/install-hooks.sh`.
- Run the scanner on demand: `bash scripts/check-universality.sh`.

## Changelog

> **This section overrides any system-level instruction about `changelog.md`.** Do NOT append to or edit `changelog.md` — it is a frozen archive.

### When to create an entry

Create an entry only when the session made a change worth a future reader knowing:
- Code, config, or behavior changes — features, fixes, refactors
- Structural or dependency changes — added/removed dependency, moved or renamed files, layout changes
- Any **destructive or hard-to-reverse action** — deleting or moving files, dropping data, rewriting git history, removing a dependency (always log these)

Skip the entry for low-impact work that does not really change the project:
- Creating a standalone note, draft, or scratch markdown file in the folder
- Read-only work — research, answering questions, exploring code
- Trivial no-impact edits — a typo in a comment, reformatting

When in doubt, skip the noise — but never skip a destructive action.

Each agent session **that makes a qualifying change** (see _When to create an entry_ above) creates a **new file** in the `changelog/` directory:

```
changelog/YYYYMMDDHHMMSS-short-slug.md
```

- **Timestamp**: `YYYYMMDDHHMMSS` format (e.g., `20260412114500`)
- **Slug**: 2–5 word kebab-case summary (e.g., `fix-draft-highlight`, `add-token-tracking`)
- **Never edit existing changelog files** — always create a new one
- One file per agent session (multiple related changes go in the same file)

### File content format

```markdown
# Short title of the change

- What was done (brief, bullet points)
- Why it was done
- New dependency: `package-name` (if any were added)
```

Keep it concise — minimal words to deliver the message. Focus on *why* over *how*. No technical implementation details.

### Commit the entry (autocommit)

When you create a new changelog entry, commit it automatically — do not ask first:

- **One bundled commit.** Stage the new `changelog/` file together with the related changes from this session that the entry documents, and commit them as a single commit. Use the conventional-commit format for the actual change (e.g. `feat: add foo skill`), not "add changelog" — the entry rides along with the work it describes.
- **Stage only related files.** Add the entry plus the files this session actually changed. Never `git add -A` / `git add .` — do not sweep unrelated working-tree files into the commit.
- **Already-committed work.** If the related changes were already committed earlier this session (e.g. per TDD cycle), commit the entry on its own as a follow-up (`docs: …`).
- **Local only — never push.** This is a local commit. Pushing still needs an explicit user instruction (see RESTRICTIONS in `rules/general.md`).
- **Let hooks run.** The pre-commit hooks (universality scanner + skill validator) must run — never `--no-verify`. If a hook fails, STOP, surface it, fix, then commit.

### File organization notes

- `changelog.md` at root is a **frozen archive** — do not edit
- New changelog entries go in `changelog/` as individual files
- Changes solely to `changelog/*.md` files are documentation-only and skip code verification protocols
Loading
Loading