From agent-harness
Use when asked to update the harness, pull the latest template/guardrail changes, or sync a project with the agent-harness repo. Works in any project previously scaffolded from an agent-harness template.
How this skill is triggered — by the user, by Claude, or both
Slash command
/agent-harness:harness-updateThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Pull the latest agent-harness template changes into this project. Scripts do the deterministic work; you do the judgment. Updates touch ONLY harness-owned files (declared in the template's harness-manifest.json) — never the user's app code.
Pull the latest agent-harness template changes into this project. Scripts do the deterministic work; you do the judgment. Updates touch ONLY harness-owned files (declared in the template's harness-manifest.json) — never the user's app code.
Read .harness.json in the project root.
Missing stamp → backfill: ask which template the project came from (cli / etl-api / expo-app) and roughly when it was scaffolded. Resolve the repo (step 2), find a plausible commit (git -C $repo log --format='%H %ad' --date=short -- <templateDir> around that date; when unsure use the OLDEST plausible commit — too-old means more files flagged for manual merge, which is safe; too-new silently skips updates). Then write the stamp with the plugin's write-stamp script pointed at that commit:
git -C $repo checkout <commit> --quiet
& "${CLAUDE_PLUGIN_ROOT}/scripts/write-stamp.ps1" -ProjectDir . -Template <template> -ProjectName <name from the project's .sln/app.json> -RepoPath $repo
git -C $repo checkout main --quiet
For expo projects pass -BundleId read from app.config.js/app.json. Confirm the rename map in the written stamp matches reality (search the project for the renamed values).
$manifestPath = Join-Path $env:TEMP 'harness-update-manifest.json'
& "${CLAUDE_PLUGIN_ROOT}/scripts/get-update.ps1" -OutFile $manifestPath
Read the manifest. If files is empty, report "already up to date at " and stop.
This project's hooks enforce the lifecycle — follow it:
gh issue create --title "Update harness to <first 7 chars of headCommit>" --body "Pull latest agent-harness template changes."
git checkout -b feat/<N>-harness-update
& "${CLAUDE_PLUGIN_ROOT}/scripts/apply-update.ps1" -ManifestPath $manifestPath
For each modified/deleted entry, get the three versions and merge:
git -C <repoPath> show "<lastUpdateCommit>:<templatePath>" # base
git -C <repoPath> show "<headCommit>:<templatePath>" # incoming
plus the project's current file. Apply the stamp's renames mentally when comparing. Produce a merge that keeps the project's customizations AND adopts the template's improvements; explain each decision in one line. If a customization genuinely conflicts with the update's intent, ask the user. For deleted entries: delete the project file only if the project never customized it; otherwise ask.
npm run verifydotnet build --no-incremental then dotnet test --no-buildFix failures before proceeding (a template update that breaks the project is a merge you got wrong in step 5 — revisit it, don't loosen the project).
$s = Get-Content .harness.json -Raw | ConvertFrom-Json
$s.lastUpdateCommit = '<headCommit>'
[IO.File]::WriteAllText((Join-Path (Get-Location) '.harness.json'), ($s | ConvertTo-Json -Depth 5), (New-Object System.Text.UTF8Encoding $false))
Commit everything (normal commit — the gate runs), open the PR per the project's CLAUDE.md lifecycle, and summarize: files applied, files merged (with one-line rationale each), files needing the user's decision.
Searches MemPalace before answering questions about past work, people, projects, or prior decisions. Returns verbatim stored content instead of guessing from model memory.
Guides Payload CMS config (payload.config.ts), collections, fields, hooks, access control, APIs. Debugs validation errors, security, relationships, queries, transactions, hook behavior.
Implements vector databases with Pinecone, Weaviate, Qdrant, Milvus, pgvector for semantic search, RAG, recommendations, and similarity systems. Optimizes embeddings, indexing, and hybrid search.
npx claudepluginhub ryan75195/dotnet-agent-harness --plugin agent-harness