install-doctor
Scans the existing environment (after the built-in `/doctor` — this covers FH-plugin conflicts it does not) before and after meta-harness plugin install to…
Skill by chrono-meta
Chalk Labs
Need help deploying install-doctor?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/chrono-meta-install-doctor
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: security
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/install-doctor
What's inside
- Skill name
install-doctor- Description
- Scans the existing environment (after the built-in `/doctor` — this covers FH-plugin conflicts it does not) before and after meta-harness plugin install to diagnose conflicts, duplicates, and silent overwrite risks. Reports potential conflict areas with existing CLAUDE.md, skills, hooks, and audit practices. Activates on "install conflict", "any overlaps?", "is it safe to install?".
- License
- MIT
- Instructions
- 324 lines in SKILL.md · view on GitHub
Agent Skills spec issues
- allowed-tools: must be a space-separated string
- files: referenced but missing: scripts/fh_node_check.sh, templates/settings.SessionStart.snippet.json
Files (1)
- SKILL.md
SKILL.md (first lines)
# install-doctor — Plugin Install Conflict Diagnosis
Diagnoses potential conflicts, duplicates, and overwrite risks that may occur when installing meta-harness plugins into an existing project.
**Can be installed standalone** — works correctly with plugin install alone, without cloning the full meta-harness.
## Triggers
```
/install-doctor # Full diagnosis of current environment
/install-doctor --plugin fh-meta # Diagnose targeting a specific plugin
```
## Step 0. Runtime Environment Requirements Check
FH operates on the assumption of a large context window. If the environment is unsuitable, `Input is too long` 400 errors may occur during skill execution.
### Supported Environments
| Environment | Support | Notes |
|---|---|---|
| Claude Code + Anthropic API Key | ✅ Recommended | 200K context · officially supported |
| claude.ai Pro / Team Plan | ✅ Recommended | 200K context · officially supported |
| AWS Bedrock (direct API) | ⚠️ Conditional | Possible with sufficient account quota — default quota may be low |
| Bedrock + claude-code-router + LiteLLM | ⚠️ Unofficial | Context limit exceeded frequently · not recommended |
| Internal AI API proxy | ⚠️ Conditional | Depends on max_input_tokens setting |
### Environment Check
```bash
# Detect community router (Bedrock bypass)
ls /opt/homebrew/lib/node_modules/@musistudio/ 2>/dev/null \
&& echo "⚠️ claude-code-router detected — routing via Bedrock/external proxy" \
|| echo "✅ No community router"
# Claude Code version
claude --version 2>/dev/null || echo "Claude Code not installed"
```
**⚠️ When Bedrock routing confirmed**: Request AWS quota increase (TPM/RPM increase) or raise LiteLLM `max_input_tokens`, then retry. Fundamental solution is switching to direct Anthropic API access.
### Node floor check — run on EVERY machine, not once per user
A user's context (companion store, memory, session card) travels between machines; **the machine's
own setup does not**. A rich context makes a fresh laptop read as "already configured", so the two
mechanical floors below must be checked per node — this is the check `scripts/fh_node_check.sh`
points at when it reports a missing floor at turn 0.
```bash
# HUB_DIR — the same variable the hook scripts use. Do NOT invent a second name (an earlier draft
# read FH_DIR, which nothing sets, so an operator with HUB_DIR set would have been silently told
# about a different repo).
FH="${HUB_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"
# ① git-side floor. Probe the EXECUTABLE HOOK, not the config key — `core.hooksPath` unset is a
# normal, working install when hooks sit in .git/hooks, and a set-but-empty path is a broken
# install that the key alone reports as fine. Both directions are wrong; the file is the truth.
# Resolve the directory with `git rev-parse --git-path` rather than assembling "$FH/.git/hooks":
# in a LINKED WORKTREE `.git` is a file, so the assembled path does not exist and every hook
# reads as missing (verified: a worktree with working hooks reported ❌❌ under the old form).
# Same resolution the script uses — one predicate, not two.
# --path-format needs git >= 2.31; on older git fall back to the RELATIVE --git-path form resolved
# against the toplevel, never to a hand-built "$FH/.git/hooks" (which is the worktree bug above).
HD="$(git -C "$FH" rev-parse --path-format=absolute --git-path hooks 2>/dev/null)"
if [ -z "$HD" ]; then
_rel="$(git -C "$FH" rev-parse --git-path hooks 2>/dev/null || echo .git/hooks)"
case "$_rel" in /*) HD="$_rel" ;; *) HD="$(git -C "$FH" rev-parse --show-toplevel 2>/dev/null || echo "$FH")/$_rel" ;; esac
fi
for h in pre-commit pre-push; do
if [ -x "$HD/$h" ]; then echo "✅ $h executable ($HD)"
else echo "❌ $h MISSING or not executable at $HD — that gate is not running on this node"; fi
done
# ② turn-0 load floor (Mode D only): the companion-load hook. Its registration lives in the
# GITIGNORED settings.local.json, so it does NOT survive a re-clone — hence a per-node check.
# Parse the JSON and match the SCRIPT NAME inside hooks.SessionStart — not a bare grep for the
# key. settings.json also carries a SessionStart entry (fh_node_check), so keying on the key
# alone passes on a machine where the companion load is absent; and a plain substring grep also
# hits commented-out lines, other hook events, and permission strings. Same predicate the script
# uses — two predicates reading one state differently is how a result leaks silently.
# Applicability gate FIRST, and keyed the same way the script keys it: a Mode D user is one with
# an exported BE_DIR, or a CLAUDE.local.md that MENTIONS a companion binding — NOT one who merely
# HAS a CLAUDE.local.md (that is Claude Code's standard local-override file; anyone may keep one),
# and NOT one who has a settings.local.json (gitignored, so a fresh clone lacks it — and a fresh
# clone with a full companion store is the exact case this must not silence). The vocabulary
# covers every backend the wizard documents (vault · gbrain · *-be repo), because an FH-flavoured
# regex would silence two first-class backends. It is a MENTION test, not semantic: "I do not use
# a companion store" also matches, and that over-match costs one informational line — the cheap
# direction, since the expensive direction is silence.
if { [ -n "${BE_DIR:-}" ] && [ -d "$BE_DIR" ]; } \
|| { [ -f "$FH/CLAUDE.local.md" ] && grep -qiE 'BE_DIR|companion[ -]store|컴패니언|vault|gbrain|obsidian' "$FH/CLAUDE.local.md"; }; then
python3 - "$FH" <<'PY'
import json, os, sys
hub = sys.argv[1]
for p in (os.path.join(hub, ".claude", "settings.local.json"),
os.path.expanduser("~/.claude/settings.json")):
try: groups = json.load(open(p)).get("hooks", {}).get("SessionStart", [])
except Exception: continue
if any("fh_session_load" in h.get("command", "")
for g in groups for h in g.get("hooks", [])):
print("✅ companion-load SessionStart registered"); sys.exit(0)
print("❌ companion-load SessionStart MISSING — freshness + env-delta do not fire at turn 0")
PY
else
echo "N/A companion-load SessionStart (not a Mode D setup — no companion store configured)"
fi
```
> **Detail**: See `SKILL_detail.md §Bootstrap-Scope` — why the turn-0 reporter ships with the clone but its registration does not, and what the check item backstops — read when a user asks why the floor check exists or whether the turn-0 signal is guaranteed.
**Emission model** (so the output is read correctly): a **missing floor is reported every session**
until it is fixed — it is a persistent condition, not an event. A healthy machine is silent. So
seeing this banner twice is not a bug, and seeing it once then never again means it was an *event*
line (identity change / infra delta), not a floor complaint.
**Fix for either ❌**: re-run `/install-wizard` (it registers both — `install-wizard/SKILL_detail.md`
§Mode-D-Companion-Setup step 3 and the 4-axis gate block), or apply the two commands it uses directly.
> **Detail**: See `SKILL_detail.md §Node-Floor-Rationale` — the measured 2026-07-30 second-machine case behind making this a check item — read when defending or questioning the node floor check.From chrono-meta/forge-harness, MIT.
More from chrono-meta/forge-harness
- 0.651score
persona-cast
chrono-meta
One-line doorway that lets a field harness review an artifact (a screen, a spec, a PR, a page) through a pre-built cast of review-shaped personas — web-review…
SkillAFreshness: A★ 30Claude Code +9 - 0.647score
deliberation
chrono-meta
Multi-perspective synthesis structure — Innovator (propose) → Devil-Advocate (challenge) → Mediator (synthesize) 3-layer execution.
SkillAFreshness: A★ 30Claude Code +9 - 0.647score
video-ingest
chrono-meta
Ingests a video's content (YouTube and similar) for agent context, routing by capability, task need, and video length — a natively multimodal engine (Gemini…
SkillAFreshness: A★ 30Claude Code +9 - 0.647score
convergence-loop
chrono-meta
A universal gate-reinforcement meta-skill that replaces the "single-pass = done" pattern with a converging loop of up to N rounds.
SkillAFreshness: A★ 30Claude Code +9 - 0.647score
cross-ecosystem-synergy-detection
chrono-meta
Automatically discovers useful combinations (synergy pairs) across multiple installed plugins and skills, and presents them as a ranked table.
SkillAFreshness: A★ 30Claude Code +9 - 0.647score
verify-bidirectional
chrono-meta
A skill that immediately updates the baseline and reflects it in the next session when the user raises a counter-argument to an AI recommendation.
SkillAFreshness: A★ 30Claude Code +9 - 0.647score
pipeline-conductor
chrono-meta
Chains the four core FH verification pipelines (harvest-loop → steel-quench → phantom-quench → sim-conductor) into a single gated sweep.
SkillAFreshness: A★ 30Claude Code +9 - 0.647score
meta-prompt-builder
chrono-meta
Generates structured prompts to send to each agent in an agent dispatch plan.
SkillAFreshness: A★ 30Claude Code +9 - 0.647score
qp-plan
chrono-meta
Prepare stage of QP — builds a surface inventory of a web page or desktop app (routes, menus, forms, dialogs), checks it is MECE (no overlap, nothing missing…
SkillAFreshness: A★ 30Claude Code +9 - 0.647score
qp-run
chrono-meta
Automation stage of QP — executes the test cases from qp-plan against the live app through the session's adapter (Playwright MCP for web, computer-use MCP for…
SkillAFreshness: A★ 30Claude Code +9 - 0.647score
return-path-gate
chrono-meta
Audits SKILL.md files in plugins/ for return-path gate compliance.
SkillAFreshness: A★ 30Claude Code +9 - 0.647score
token-budget-gate
chrono-meta
Estimates token cost before a multi-step task and outputs a 4-tier Green/Yellow/Orange/Red gate verdict.
SkillAFreshness: A★ 30Claude Code +9
Signals
- Stars
- 30
- Forks
- 1
- Open issues
- 2
- Last commit (this folder)
- Oct 15, 2026 (15 days ago)
- Last release
- Oct 24, 2026 (7 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/chrono-meta/forge-harness
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from chrono-meta
- 0.651score
persona-cast
chrono-meta
One-line doorway that lets a field harness review an artifact (a screen, a spec, a PR, a page) through a pre-built cast of review-shaped personas — web-review…
SkillAFreshness: A★ 30Claude Code +9 - 0.647score
cross-ecosystem-synergy-detection
chrono-meta
Automatically discovers useful combinations (synergy pairs) across multiple installed plugins and skills, and presents them as a ranked table.
SkillAFreshness: A★ 30Claude Code +9 - 0.647score
meta-prompt-builder
chrono-meta
Generates structured prompts to send to each agent in an agent dispatch plan.
SkillAFreshness: A★ 30Claude Code +9 - 0.647score
verify-bidirectional
chrono-meta
A skill that immediately updates the baseline and reflects it in the next session when the user raises a counter-argument to an AI recommendation.
SkillAFreshness: A★ 30Claude Code +9 - 0.647score
return-path-gate
chrono-meta
Audits SKILL.md files in plugins/ for return-path gate compliance.
SkillAFreshness: A★ 30Claude Code +9 - 0.647score
video-ingest
chrono-meta
Ingests a video's content (YouTube and similar) for agent context, routing by capability, task need, and video length — a natively multimodal engine (Gemini…
SkillAFreshness: A★ 30Claude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get install-doctor running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
install-doctor skill. Agent Mart. https://agentmart.dev/skills/chrono-meta-install-doctor (last updated 2026-10-24)