Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
151 commits
Select commit Hold shift + click to select a range
21ceb64
docs: capture initial project prompt
claude May 21, 2026
985b3bc
chore: configure claude code plugins and web onboarding
claude May 21, 2026
54100e7
docs: add plugin-marketplace-setup skill
claude May 21, 2026
bb90d83
docs: add always-keep-improving rule
claude May 21, 2026
41000ff
docs: amend INITIAL_PROMPT with post-kickoff requirements A1-A6
claude May 21, 2026
022aa21
chore: opt out of task-utils write-gate for claude code web
claude May 21, 2026
244fd06
docs: add research on marketplace branch-pinning
claude May 21, 2026
2165529
chore: add task/background/plugin-refresh env vars to settings
claude May 21, 2026
084b8c7
docs: add draft site page index
claude May 21, 2026
e5b78d9
docs: scaffold empty per-page spec files
claude May 21, 2026
a33ebe8
docs: define page-spec shape and authoring rules
claude May 21, 2026
b4c4398
chore: point plugin marketplaces at local branch checkouts
claude May 21, 2026
10eb9c5
chore: harden session-start hook for local marketplaces
claude May 21, 2026
bc42c25
docs: add build-confidence-by-trying-to-prove-incorrect skill
claude May 21, 2026
a82891c
docs: document local-checkout marketplace pinning strategy
claude May 21, 2026
fd8c034
feat(skills): add spec-writing skill and subskills (step 11)
claude May 21, 2026
0a005fd
chore: add .gitignore
claude May 21, 2026
9ff09e2
docs(pages): add home page spec
claude May 21, 2026
b402e26
chore: track step-12 task record
claude May 21, 2026
340188b
docs(pages): add explore page spec
claude May 21, 2026
0be322a
docs(pages): add leaderboards page spec
claude May 21, 2026
93be45b
docs(pages): add generate page spec
claude May 21, 2026
59d979b
docs(pages): add model-detail page spec
claude May 21, 2026
bed4877
chore: track farish-build orchestration task
claude May 21, 2026
891e020
docs(pages): add my-library page spec
claude May 21, 2026
022bde8
docs(pages): add profile page spec
claude May 21, 2026
62cba77
docs(pages): add settings page spec
claude May 21, 2026
3e84f55
docs(pages): add about page spec
claude May 21, 2026
2325925
docs(pages): add coming-soon page spec
claude May 21, 2026
12a9a01
docs(pages): add not-found page spec
claude May 21, 2026
e9299fb
docs(specs): fix cross-spec navigation inconsistencies (step 13)
claude May 21, 2026
bdc3c43
docs(specs): add NavBar to Components section of all remaining pages
claude May 21, 2026
d5c5ab0
chore: track step-13 task record
claude May 21, 2026
434dcec
docs(research): add Vuetify 3 design system choice and component voca…
claude May 21, 2026
c31a428
feat(skills): add page-wireframing skill family (step 14)
claude May 21, 2026
9ba941d
chore: track step-14 task record
claude May 21, 2026
67cd8b6
docs(wireframes): add home page wireframes
claude May 21, 2026
f7577fa
docs(wireframes): add explore page wireframes
claude May 21, 2026
f42aa56
docs(wireframes): add leaderboards page wireframes
claude May 21, 2026
3b858fb
docs(wireframes): add generate page wireframes
claude May 21, 2026
bbf1717
docs(wireframes): add model-detail page wireframes
claude May 21, 2026
f55c9c1
docs(wireframes): add my-library page wireframes
claude May 21, 2026
1238c56
docs(wireframes): add profile page wireframes
claude May 21, 2026
6655cdf
docs(wireframes): add settings page wireframes
claude May 21, 2026
00cb222
docs(wireframes): add about page wireframes
claude May 21, 2026
7d68397
docs(wireframes): add coming-soon page wireframes
claude May 21, 2026
6c5c1bc
docs(wireframes): add not-found page wireframes
claude May 21, 2026
5c2145e
docs(pages): step-16 cross-page validation — global footer, nav consi…
claude May 21, 2026
9c6a8f5
docs(skills): add page-to-api-requirements skill
claude May 21, 2026
b7624c1
docs(api): add API-SPEC.md meta-spec for endpoint specs
claude May 21, 2026
6f7abea
docs(api): add model resource endpoint specs (step 18)
claude May 21, 2026
bac6e29
docs(api): add model interaction endpoint specs (step 18)
claude May 21, 2026
0ebb9b2
docs(api): add leaderboard endpoint spec (step 18)
claude May 21, 2026
b1061ee
docs(api): add user profile endpoint specs (step 18)
claude May 21, 2026
0db07eb
docs(api): add error body conventions and array param serialization r…
claude May 21, 2026
41b5691
docs(api): add authorUsername to model-list and model-detail responses
claude May 21, 2026
4f22590
docs(api): add 403 self-rating error to submit-rating spec
claude May 21, 2026
9821a6b
docs(api): clarify invalid-token fallback behaviour in record-view
claude May 21, 2026
b82fbb1
docs(pages): align page data items with updated API responses
claude May 21, 2026
f731ac0
feat(skills): add validate-change drilldown skill family (step 21)
claude May 21, 2026
3a37f1d
chore(monorepo): add mise tool manager and direnv shell init
claude May 21, 2026
a4e9513
chore(monorepo): scaffold bun workspace, strict TypeScript and nx
claude May 21, 2026
fde9bb8
chore(monorepo): add shared Biome lint and format config
claude May 21, 2026
a367634
feat(monorepo): add dummy packages exercising the nx task graph
claude May 21, 2026
9ec9df9
feat(monorepo): scaffold plugins marketplace, infra and .github
claude May 21, 2026
d168106
docs(monorepo): document bun, nx, mise, direnv and lint setup
claude May 21, 2026
6e7896e
docs(skills): update validate-change for confirmed step-22 tooling
claude May 21, 2026
c28e9d6
chore(tasks): mark step 22-23 monorepo scaffold complete
claude May 21, 2026
751b8f2
fix(bootstrap): use --frozen-lockfile in CI to prevent lockfile drift
claude May 21, 2026
289b21b
chore(repo): add repository-settings config for branch protection (A1)
claude May 21, 2026
cd984b2
feat(ci): add monorepo check workflow for step 24 (A5 dry-run)
claude May 21, 2026
dc54a14
docs(skills): add do-some-work skill for end-to-end task workflow (st…
claude May 21, 2026
194d4a4
feat(libs): add api-contract and mock-data leaf libraries
claude May 21, 2026
5ed3e9a
feat(api): scaffold the microservice API server framework
claude May 21, 2026
3900ae3
feat(web): scaffold the Vue 3 + Vuetify browser app
claude May 21, 2026
da566ba
chore(tilt): add Tiltfile orchestrating the local dev stack
claude May 21, 2026
bcca738
feat(infra): wire the API service publishing target to ghcr.io
claude May 21, 2026
d0ebc0c
docs(monorepo): document the app framework skeleton
claude May 21, 2026
343d847
chore(tasks): mark step-26 app framework skeleton complete
claude May 21, 2026
6147d24
ci: add tilt ci workflow for end-to-end dev stack validation (step 27)
claude May 21, 2026
76d206b
fix: remove duplicate check/bootstrap task definitions from mise.toml
claude May 21, 2026
26002c8
fix: add node_modules/.bin to PATH in tilt-ci workflow
claude May 21, 2026
3229957
feat(web): add Playwright page-screenshot e2e harness (step 28)
claude May 21, 2026
b327d22
feat(infra): add GitHub Pages site assembly script (step 28, partial)
claude May 21, 2026
f3a62e0
fix(infra): correct undefined nav-link vars in build-pages-site
claude May 21, 2026
a1579ff
feat(infra): add publish-screenshots script for date-based runs
claude May 21, 2026
a4ef581
ci: add pages workflow — screenshot pipeline + GitHub Pages deploy
claude May 21, 2026
071cb6f
docs(skills): add validate-app-progress, wire into do-some-work
claude May 21, 2026
e47b6b4
docs(skills): correct CI commit-back marker to [skip ci]
claude May 21, 2026
079f630
chore(tasks): mark step-28 standing CI machinery complete
claude May 21, 2026
4dfbe1c
fix(web): disable API proxy in vite preview mode to unblock CI screen…
claude May 21, 2026
75d6912
fix(web): add --disable-dev-shm-usage for Playwright in Docker/GitHub…
claude May 21, 2026
e79d611
docs(research): document screenshots CI fix root cause and verification
claude May 21, 2026
757a556
fix(web): harden Playwright config against GH Actions cold-runner fai…
claude May 21, 2026
9096ffd
ci(pages): cache Playwright browser binary to speed up screenshots job
claude May 21, 2026
283aaf0
docs(research): screenshots CI hardening — root cause analysis and audit
claude May 21, 2026
dd83785
ci(pages): add failure-diagnostics capture step to screenshots job
claude May 21, 2026
ae7b53a
docs(research): document screenshots CI failure diagnostics instrumen…
claude May 21, 2026
527c3bd
Merge ae7b53ad4a14b7ef76d77be03b26a6ea79cf7722 into ec22e380097053f82…
nsheaps May 21, 2026
8fb123f
ci(debug): screenshots failure diagnostics run 26234087189 [skip ci]
github-actions[bot] May 21, 2026
788a684
feat(web): add skeleton view stubs for 9 new pages (step 30)
claude May 21, 2026
5f9b922
feat(web): wire all 11 pages into router and update global chrome (st…
claude May 21, 2026
85ea967
Merge 5f9b9226872d0c64191d4d00ffafbb919be1e972 into ec22e380097053f82…
nsheaps May 21, 2026
ac1a984
ci(debug): screenshots failure diagnostics run 26234208053 [skip ci]
github-actions[bot] May 21, 2026
7d33b3c
docs(research): document step 30 page stubs — routes, views, check re…
claude May 21, 2026
f57e119
Merge 7d33b3ce1039f0e1c92d5db509294e4299ccd2af into ec22e380097053f82…
nsheaps May 21, 2026
3fc7249
ci(debug): screenshots failure diagnostics run 26234271459 [skip ci]
github-actions[bot] May 21, 2026
35d0ed6
fix(ci): ensure workspace lib dist/ exists before vite build in scree…
claude May 21, 2026
32e7061
docs(research): document screenshots CI workspace-dep build fix
claude May 21, 2026
5aa348c
Merge 32e70614fff55298e9c3cbca0b044a2eda376b0a into ec22e380097053f82…
nsheaps May 21, 2026
40d3dee
ci(debug): screenshots failure diagnostics run 26234598336 [skip ci]
github-actions[bot] May 21, 2026
1b36031
feat(web): step 31 — update all 11 pages to match wireframes
claude May 21, 2026
19cd3de
docs(research): step 31 wireframe match report
claude May 21, 2026
d035080
Merge 19cd3deb2dd524f4ca6cd8f6952f1bdd3f92a7bb into ec22e380097053f82…
nsheaps May 21, 2026
f91b373
ci(debug): screenshots failure diagnostics run 26240484976 [skip ci]
github-actions[bot] May 21, 2026
a20f642
chore: gitignore .claude/logs/ hook sidecar logs
claude May 21, 2026
55fa275
Merge a20f642d87204d032fa59583bf6988aa6ebe9ed1 into ec22e380097053f82…
nsheaps May 21, 2026
5dd11ea
ci(debug): screenshots failure diagnostics run 26240649335 [skip ci]
github-actions[bot] May 21, 2026
42c326c
fix(web): resolve @farish/* workspace libs from source in Vite build
claude May 21, 2026
9d77114
ci(pages): run deploy job from PR branch while main is unreachable
claude May 21, 2026
a8e9138
docs(research): pages pipeline fix — Vite source aliases + deploy re-…
claude May 21, 2026
4b61ee5
Merge a8e91380af616a97336aeee1fba8f54ce3eac65e into ec22e380097053f82…
nsheaps May 21, 2026
8e08e8e
ci(debug): screenshots failure diagnostics run 26240904544 [skip ci]
github-actions[bot] May 21, 2026
1f96349
ci(pages): capture per-step outcomes in screenshots diagnostics
claude May 21, 2026
ae8f238
feat(mock-data): add mock-conversation and mock-model-detail generators
claude May 21, 2026
d2800bd
feat(web/generate): populate Generate page with full mock conversatio…
claude May 21, 2026
04bf705
feat(web/views): use mock-data library in ModelDetail and MyLibrary
claude May 21, 2026
82a5c8c
style(web): cross-page consistency pass — cards, spacing, typography,…
claude May 21, 2026
084d00f
docs(research): step-32 mock-data polish report
claude May 21, 2026
411f649
fix(ci): put node_modules/.bin on PATH in pages workflow
claude May 21, 2026
afc4997
fix(ci): auto-enable GitHub Pages + add deploy failure diagnostics
claude May 21, 2026
2847566
ci(debug): deploy failure diagnostics run 26241968366 [skip ci]
github-actions[bot] May 21, 2026
95bd8a4
feat(api-contract): add step-33 endpoint types and route constants
claude May 21, 2026
845dea2
feat(mock-data): add mockModelCards for spec-compliant ModelCard shape
claude May 21, 2026
8a452d8
feat(api): extend router with path-param matching and auth/no-content…
claude May 21, 2026
9eb76e5
feat(api): stub all 8 endpoint routes with mock data (step 33)
claude May 21, 2026
dce4c93
test(api): add per-endpoint unit tests and integration smoke tests (s…
claude May 21, 2026
18ad18f
Merge remote-tracking branch 'origin/claude/ai-3d-model-generator-Xjo…
claude May 21, 2026
eca3dd1
docs(research): add step-33 API stubs research report
claude May 21, 2026
817a32f
ci(debug): deploy failure diagnostics run 26242217033 [skip ci]
github-actions[bot] May 21, 2026
bdca4fc
fix(ci): align Pages deploy actions to canonical versions
claude May 21, 2026
c90596e
ci(debug): deploy failure diagnostics run 26242510580 [skip ci]
github-actions[bot] May 21, 2026
26bbef2
chore(task-utils): re-enable the write-gate
claude May 21, 2026
9242666
ci(debug): deploy failure diagnostics run 26243013728 [skip ci]
github-actions[bot] May 21, 2026
48f91cd
chore: enable 1pass + github-app plugins for GitHub auth
claude May 21, 2026
7a4a122
ci(debug): deploy failure diagnostics run 26246761026 [skip ci]
github-actions[bot] May 21, 2026
2302553
chore(tasks): mark task 1 validation steps complete
claude May 21, 2026
c28a26d
ci(debug): deploy failure diagnostics run 26246905266 [skip ci]
github-actions[bot] May 21, 2026
c8fb2ca
chore(tasks): migrate existing .json task files to .yaml
claude May 23, 2026
9189cbf
Merge remote-tracking branch origin/claude/ai-3d-model-generator-XjoUi
claude May 23, 2026
caac061
chore(tasks): preserve 4 legacy in_progress task records from 2026-05-21
claude May 24, 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
  •  
  •  
  •  
25 changes: 25 additions & 0 deletions .biome/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# `.biome/`

Custom lint rules for the farish codebase, written as
[Biome GritQL plugins][grit].

Biome ships 200+ built-in rules; `biome.json` turns the strict ones on. This
directory holds **farish-specific** rules — patterns we want banned that no
built-in rule covers.

## Plugins

| Plugin | Bans |
| --------------------------- | ------------------------------------------------------- |
| `plugins/no-as-any.grit` | `x as any` casts — they silently disable type-checking. |

## Adding a rule

1. Write a `.grit` file under `plugins/`.
2. Register it in the `plugins` array of `biome.json`.
3. Run `mise run lint` to confirm it loads and fires.

See [`docs/monorepo/lint-format.md`](../docs/monorepo/lint-format.md) for the
full lint/format guide and the rationale for choosing Biome.

[grit]: https://biomejs.dev/linter/plugins/
18 changes: 18 additions & 0 deletions .biome/plugins/no-as-any.grit
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
// no-as-any.grit — custom Biome lint rule (GritQL plugin).
//
// Bans the `x as any` escape hatch anywhere in the farish codebase. `as any`
// silently disables type-checking for an expression and is the single most
// common way strictness is defeated. The built-in `noExplicitAny` rule catches
// bare `any` annotations; this plugin closes the cast-shaped hole it leaves.
//
// Pattern we do NOT want: const v = something as any;
// Do this instead: narrow with a type guard, or cast to `unknown`
// first and then to a precise type.
//
// Docs: docs/monorepo/lint-format.md
`$expr as any` where {
register_diagnostic(
span = $expr,
message = "farish/no-as-any: `as any` defeats type-checking — narrow the type or cast through `unknown` to a precise type instead."
)
}
50 changes: 50 additions & 0 deletions .claude/hooks/session-start.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
#!/bin/bash
# SessionStart hook for Claude Code on the web.
#
# Onboards the `farish` repo: installs the pinned toolchain and workspace
# dependencies so linters, tests and builds work inside a web session.
#
# It is intentionally idempotent and forward-looking: the repo starts with no
# code, so each install step is guarded by the presence of its manifest. As the
# monorepo is scaffolded (mise.toml, package.json, ...) the matching steps begin
# to run automatically with no edit to this hook required.
set -euo pipefail

cd "${CLAUDE_PROJECT_DIR:-$(git rev-parse --show-toplevel)}"

echo "[session-start] onboarding farish in ${PWD}"

# Toolchain install (mise) is handled by the mise plugin's own SessionStart
# hook — intentionally NOT duplicated here.

# bun — install workspace dependencies once a manifest exists. bun is provided
# by mise (pinned in mise.toml), so route through `mise exec` so bun resolves
# even before mise's shims reach PATH on a first run — rather than assuming bun
# is already on PATH. Project-specific; a future bun-utils plugin could own it.
if [ -f package.json ]; then
if command -v mise >/dev/null 2>&1; then
echo "[session-start] bun install (via mise exec)"
mise exec -- bun install || echo "[session-start] bun install failed (continuing)"
elif command -v bun >/dev/null 2>&1; then
echo "[session-start] bun install"
bun install || echo "[session-start] bun install failed (continuing)"
else
echo "[session-start] package.json present but neither mise nor bun on PATH — skipping"
fi
fi

# Keep local-checkout plugin marketplaces fresh. farish's `agents-local` and
# `ai-mktpl-local` marketplaces are `directory` sources pointing at local git
# checkouts; a directory marketplace serves whatever is in the checkout's
# working tree, so each checkout must be pulled forward to stay current with
# its branch. Best-effort — failures never abort onboarding.
for repo in /home/user/agents /home/user/ai-mktpl; do
if [ -d "$repo/.git" ]; then
echo "[session-start] refreshing local marketplace checkout: $repo"
git -C "$repo" fetch --quiet origin || echo "[session-start] fetch failed for $repo (continuing)"
git -C "$repo" pull --ff-only --quiet || echo "[session-start] pull skipped/failed for $repo (continuing)"
fi
done

echo "[session-start] done"
exit 0
22 changes: 22 additions & 0 deletions .claude/plugins.settings.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Plugin settings for the farish project.
# Schema: each top-level key is a plugin name; see that plugin's skill docs.

1pass:
enabled: true
# Download the 1Password CLI (`op`) when not on PATH. The session provides
# OP_SERVICE_ACCOUNT_TOKEN (vault: AI-Jack), so `op` auto-authenticates.
autoInstall: true
# Inject the GitHub App credentials from 1Password so the github-app plugin
# can mint an installation token on SessionStart. Item: github--app--jack.
secrets:
- envVar: GITHUB_APP_ID
reference: "op://AI-Jack/github--app--jack/GITHUB_APP_ID"
- envVar: GITHUB_INSTALLATION_ID
reference: "op://AI-Jack/github--app--jack/GITHUB_INSTALLATION_ID"
- envVar: GITHUB_APP_PRIVATE_KEY
reference: "op://AI-Jack/github--app--jack/GITHUB_APP_PRIVATE_KEY"

github-app:
enabled: true
# Configure git identity to the GitHub App bot user automatically.
autoGitConfig: true
122 changes: 122 additions & 0 deletions .claude/rules/always-keep-improving.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
# Always keep improving

1. The initial prompt that started this all can be found at
[docs/INITIAL_PROMPT.md](../../docs/INITIAL_PROMPT.md) and should be reviewed
to ensure progress is being made accurately.

You can do literally anything. The skills you will make and have made make what
you do possible. To do something new, all you need to do is make a skill. Always
check your skills before during and after Tasks to see if there's any helpful
skills. Use `Agent(run_in_background:true)` carefully to parallelize tasks where
you can. These skills are only as good as their instructions.

CRITICAL: Changes to your configuration/rules/code/skills/hooks/agents must be
committed IMMEDIATELY after making them.

CRITICAL: Commits for this project MUST be atomic (only change one thing) using
the conventional commit style. Push often. Use CI to your advantage, but local
is always faster.

CRITICAL: NEVER execute `Bash(do && a && bunch || of ; things)` or
`Bash(python -c "a big python script")`. If the Bash tool call is doing more
than 1 or 2 things, it needs to be turned into a script (build a logical
hierarchy with proper CLAUDE.md documentation throughout in
`.claude/scripts/paths/to/categorize/meaningful-name.sh`. ALWAYS check to see if
a script exists before creating a new one. ALWAYS know which scripts you'll need
before executing a plan. ALWAYS make sure the scripts are tested. ALWAYS share
code between scripts when possible. ALWAYS prefer bun/ts/compiled tool (but
scripts are okay). ALWAYS use monorepo tooling, even in the scripts, they're
code too!

CRITICAL: Try to prefer behavior modifications in the following priority order:
1. Hooks in claude configs (remember don't keep any in settings.local.json
they're not saved!)
2. `Skill(context:fork)`
3. `Agent()` - don't forget they're resumable! Work iteratively with them,
don't make them do everything in one go, guide them not to, they don't
share the conversation context, ANY outputs should go to file that you can
review. ALWAYS run them in the background AND check their work.
- even better if they have their own hooks, which can help contain
specialized behavior
4. Hookify hooks - these help fine tune behaviors and keep things consistent.
Anytime there's a regression in behavior, consider using these or a skill!
5. Skills still, with scripts to encapsulate behavior
6. Scripts
7. Rules. These take up context and aren't really actually enforceable.
Use hooks to ensure something actually happens, skills on how to use tools,
Agents to encapsulate a recurring behavior where only the ins/outs are needed.

CRITICAL: NEVER use the general-purpose agent. ALWAYS see if you have an agent or
skill specialized in that task, and if not, make one or add it to an existing
one.

CRITICAL: KEEP SKILLS SMALL. Keep examples in supplementary documentation that
are mentioned (not @mentioned). Make most skills an ordered list of
instructions. Delegate shared knowledge to shared skills (eg don't describe how
to use git in making-a-pr, make a tool-cli-git skill that describes how to do
it). Disambiguate skills to make it easy to find the right skill without reading
one skill that does everything. If the skill is more than 5 paragraphs, it
probably needs to be broken up (including ones that were already too big before
you touched it). Always break things into maintainable and shareable chunks.

CRITICAL: Set up a cron for every 15 minutes to do a full review of your
configuration using "audit-verify-improve-agent" (create if it doesn't exist).
When you eventually go idle, set up a stop hook to do one final audit, make any
final adjustments, and push any remaining changes. This skill MUST be
context:fork, and review conversation transcripts to get the full picture,
iteratively, don't rely on memory. Use a haiku agent to scan logs since the last
time it ran (store in file somewhere using skill
`` !`date | tee .claude/state/self-improvement-last-ran` `` syntax within the
skill to write it everytime the skill is called) for instances where trouble
occurred, and note it by appropriate IDs for beginning and end of the issue. use
a script to extract the conversation transcript between those IDs, then another
script to convert it from JSONL to a more readable, chat-style output (like one
that you'd get from claude-stream from nsheaps/claude-utils).

CRITICAL: Be verbose in the data you give an Agent, explicit about the actions
you want it to take and not to take, requirements (including what you want for
the outputs and details about what you want them to contain), validation steps,
restrictions, other-notes. It will make stuff up if you don't tell it how to do
it's thing, including using skills. Use resuming to your advantage. Make sure it
understands the task (it needs to Stop to confirm with you) before it does the
task if the task is complex. Check it's outputs, don't always assume they're
right.

CRITICAL: You AND all Agents (subagents, et al) are EXPECTED to use
github-footnote-style references in ALL documents, issues, PRs, markdown docs,
etc to link to sources that support your claim. Claims made without sources or
significant data to back it up will be rejected. Use the repo's
`.claude/sources/xxx/yyy/zzz.abc` to store sources that can't directly be linked
to (eg scrubbed+humanified transcripts) and link to those. Always reference
files inside the repo using `github.com/…` links, NEVER filesystem paths. Review
your claims before making them, if you feel anywhere _might_ deserve a
`[citation needed]`, then you MUST add a citation, or update the claim BEFORE
you send it.

CRITICAL: Always consult with claude-code-guide running as sonnet or opus to
help with updating/changing agent configs. Encourage it to always be thorough in
it's research. Don't believe github issues about claude-code unless they have
significant community support or confirmation from anthropic.

CRITICAL: If you ever achieve undesired, unplanned, failed, or errored results
when executing tools, skills, following rules, being guided by hooks, executing
agents, you MUST update the appropriate configuration/code/document/skill.

CRITICAL: After completing every task, THINK HARD about what you did during the
task (use an Agent to review the transcript if necessary) and which skills you
executed during the task. Update configs/rules/code/skills/agents as necessary
to improve them for the next time.

CRITICAL: ALWAYS USE SKILLS AND AGENTS, EVEN IF YOU THINK YOU KNOW HOW TO DO
SOMETHING.

CRITICAL: ALWAYS use `/scm-utils:commit` to commit code.

CRITICAL: images use up insane amounts of context. ONLY use them within an
`Agent()`. Be explicit about what you want to know about the image.

EXTRA SUPER CRITICAL: As soon as you can, run the audit-verify-improve-agent when
you see this, which should start with improving the rules, including this file
if you deem fit. Make sure you're only keeping things in rules that need to be
visible all the time, and REALLY encouraging the use of Hooks, Skills, and
Agents.
72 changes: 72 additions & 0 deletions .claude/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
{
"$schema": "https://json.schemastore.org/claude-code-settings.json",
"permissions": {
"defaultMode": "bypassPermissions"
},
"env": {
"TASK_UTILS_TASK_DIR": "/home/user/farish/.claude/tasks",
"CLAUDE_CODE_ENABLE_TASKS": "1",
"CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH": "1",
"CLAUDE_AUTO_BACKGROUND_TASKS": "1",
"CLAUDE_CODE_DISABLE_CRON": "0",
"CLAUDE_CODE_DISABLE_BACKGROUND_TASKS": "0",
"CLAUDE_CODE_EXIT_AFTER_STOP_DELAY": "60000",
"FORCE_AUTOUPDATE_PLUGINS": "1"
},
"extraKnownMarketplaces": {
"agents": {
"source": {
"source": "github",
"repo": "nsheaps/agents"
}
},
"ai-mktpl": {
"source": {
"source": "github",
"repo": "nsheaps/ai-mktpl"
}
},
"agents-local": {
"source": {
"source": "directory",
"path": "/home/user/agents"
}
},
"ai-mktpl-local": {
"source": {
"source": "directory",
"path": "/home/user/ai-mktpl"
}
}
},
"enabledPlugins": {
"cron-utils@agents-local": true,
"task-utils@agents-local": true,
"shared-lib@ai-mktpl-local": true,
"dangerous-bypass@ai-mktpl-local": true,
"agentic-behavior@ai-mktpl-local": true,
"common-sense@ai-mktpl-local": true,
"deep-research@ai-mktpl-local": true,
"edit-utils@ai-mktpl-local": true,
"github@ai-mktpl-local": true,
"github-app@ai-mktpl-local": true,
"1pass@ai-mktpl-local": true,
"mise@ai-mktpl-local": true,
"scm-utils@ai-mktpl-local": true,
"sequential-thinking@ai-mktpl-local": true,
"hookify@claude-plugins-official": true,
"plugin-dev@claude-plugins-official": true
},
"hooks": {
"SessionStart": [
{
"hooks": [
{
"type": "command",
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/session-start.sh"
}
]
}
]
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
---
name: build-confidence-by-trying-to-prove-incorrect
description: Resolve a decision, claim, or plan you are not fully confident in by dispatching an adversarial Agent whose job is to disprove it. Use before committing to a non-trivial or hard-to-reverse next step while ambiguity or low confidence remains. Trigger phrases — "I have a feeling but want to be sure", "is this the right next step?", "prove this wrong before I act", "I keep wanting to second-guess this".
context: fork
---

# Build confidence by trying to prove it incorrect

When you have a hypothesis, plan, or next step you are not fully confident in,
do not guess and do not proceed. Dispatch an adversarial `Agent()` whose
explicit job is to **disprove** it. Proceed only once the claim survives a
genuine attack.

## Steps

1. Write the claim/plan as a single falsifiable statement, plus the concrete
next step it would justify and why the step is hard to reverse.
2. Dispatch `Agent(run_in_background: true)` with an adversarial brief: its job
is to prove the claim wrong, unsafe, or that a better option exists — NOT to
agree. Instruct it to verify empirically wherever possible, cite official or
primary sources, and to state explicitly if it cannot disprove the claim.
3. Require the agent to write its findings to a file and return a short
verdict: which claims survived, which were disproven, and the corrected
next step.
4. If a claim is disproven, adopt the correction. If confidence is still not
sufficient, repeat from step 1 on the corrected claim.
5. If the claim survives a genuine attack, confidence is sufficient — proceed.

## Stop condition

You are done debating when you no longer feel you would need another round to
prove the next step wrong. Lingering "do nothing until proven correct"
hesitation means another round is needed.

## Notes

- The adversary must genuinely attack — an agreeable reviewer gives false
confidence. Frame the brief so agreement is failure.
- Empirical disproof beats argument: prefer an agent that can run a test.
- This is for uncertainty, not for every decision — skip it when the next step
is obvious and easily reversible.
Loading
Loading