Not in the top 1,000 by GitHub stars
chrono-meta/forge-harness
FH is a meta-harness for Claude Code: it helps you build harnesses and skills — the rules, gates and memory a project needs — and checks them before they ship.
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
plugins/fh-commons/skills/convergence-loop/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-commons/skills/deliberation/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-commons/skills/ko-tech-writer/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-commons/skills/mcp-circuit-breaker/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-commons/skills/persona-cast/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-commons/skills/standpoint-review/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-commons/skills/token-budget-gate/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-meta/skills/agent-composer/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-meta/skills/apex-review/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-meta/skills/asset-placement-gate/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-meta/skills/auto-decorrelation/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-meta/skills/contention-layer/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-meta/skills/context-doctor/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-meta/skills/corpus-grounding-expander/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-meta/skills/cross-ecosystem-synergy-detection/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-meta/skills/deep-clarify/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-meta/skills/dialogue-harvest/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-meta/skills/edit-manifest/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-meta/skills/fh/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-meta/skills/field-harvest/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-meta/skills/frontier-digest/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-meta/skills/goal-quench/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-meta/skills/harness-doctor/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-meta/skills/harness-pr-reviewer/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-meta/skills/harvest-loop/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-meta/skills/install-doctor/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-meta/skills/install-wizard/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-meta/skills/marketplace-gate/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-meta/skills/memory-hygiene/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-meta/skills/meta-prompt-builder/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-meta/skills/persona-roster-expander/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-meta/skills/phantom-quench/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-meta/skills/pipeline-conductor/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-meta/skills/plugin-recommender/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-meta/skills/prompt-regression/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-meta/skills/public-surface-audit/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-meta/skills/return-path-gate/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-meta/skills/salience-splitter/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-meta/skills/sim-conductor/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-meta/skills/steel-quench/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-meta/skills/verify-bidirectional/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-meta/skills/video-ingest/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-preprep/skills/preprep/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-qp/skills/qp/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-qp/skills/qp-plan/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-qp/skills/qp-regress/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
plugins/fh-qp/skills/qp-run/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
scripts/fixtures/cartridge/bad_enum/skills/demo/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
scripts/fixtures/cartridge/hook_cartridge/skills/demo/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
scripts/fixtures/cartridge/human_review/skills/demo/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
scripts/fixtures/cartridge/minimal_ok/skills/demo/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
scripts/fixtures/cartridge/no_manifest/skills/demo/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
scripts/fixtures/generated_harness/P1_r1/.claude/skills/harness/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
scripts/fixtures/generated_harness/P1_r1/.claude/skills/todo-dev/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
scripts/fixtures/generated_harness/P2_r2/.claude/skills/meeting-notes-organize/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
scripts/fixtures/generated_harness/P2_r2/.claude/skills/weekly-meeting-summary/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
scripts/fixtures/generated_harness/P2_r2/.claude/skills/weekly-summary-write/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
scripts/fixtures/generated_harness/P3_r1/.claude/skills/todo-dev/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
scripts/fixtures/generated_harness/P3_r2/.claude/skills/todo-dev-team/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
scripts/fixtures/generated_harness/P4_r2/.claude/skills/todo-dev/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
scripts/fixtures/generated_harness/P4_r2/.claude/skills/todo-orchestrator/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 86a7a68a70a3
No earlier version was observed for comparison.
Verified commit 86a7a68a70a3812c05713f64081ca42a5bfddaa8
git clone --filter=blob:none --no-checkout https://github.com/chrono-meta/forge-harness.git .hotskills/chrono-meta-forge-harness && git -C .hotskills/chrono-meta-forge-harness checkout --detach 86a7a68a70a3812c05713f64081ca42a5bfddaa8
# Copy each selected skill directory from .hotskills/chrono-meta-forge-harness into .claude/skills/<skill-name>/git clone --filter=blob:none --no-checkout https://github.com/chrono-meta/forge-harness.git .hotskills/chrono-meta-forge-harness && git -C .hotskills/chrono-meta-forge-harness checkout --detach 86a7a68a70a3812c05713f64081ca42a5bfddaa8
# Copy each selected skill directory from .hotskills/chrono-meta-forge-harness into .agents/skills/<skill-name>/Heat
3.2- Star growth, last 7 daysNot available
- Star growth, last 24 hoursNot available
- Rank movement, last 7 daysNot available
- Commits, last 30 daysNot available
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekNot available
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
30-day change not yet available: not enough history.
Individual skills in this repository
- convergence-loop
plugins/fh-commons/skills/convergence-loop - deliberation
plugins/fh-commons/skills/deliberation - ko-tech-writer
plugins/fh-commons/skills/ko-tech-writer - mcp-circuit-breaker
plugins/fh-commons/skills/mcp-circuit-breaker - persona-cast
plugins/fh-commons/skills/persona-cast - standpoint-review
plugins/fh-commons/skills/standpoint-review - token-budget-gate
plugins/fh-commons/skills/token-budget-gate - agent-composer
plugins/fh-meta/skills/agent-composer - apex-review
plugins/fh-meta/skills/apex-review - asset-placement-gate
plugins/fh-meta/skills/asset-placement-gate - auto-decorrelation
plugins/fh-meta/skills/auto-decorrelation - contention-layer
plugins/fh-meta/skills/contention-layer - context-doctor
plugins/fh-meta/skills/context-doctor - corpus-grounding-expander
plugins/fh-meta/skills/corpus-grounding-expander - cross-ecosystem-synergy-detection
plugins/fh-meta/skills/cross-ecosystem-synergy-detection - deep-clarify
plugins/fh-meta/skills/deep-clarify - dialogue-harvest
plugins/fh-meta/skills/dialogue-harvest - edit-manifest
plugins/fh-meta/skills/edit-manifest - fh
plugins/fh-meta/skills/fh - field-harvest
plugins/fh-meta/skills/field-harvest - frontier-digest
plugins/fh-meta/skills/frontier-digest - goal-quench
plugins/fh-meta/skills/goal-quench - harness-doctor
plugins/fh-meta/skills/harness-doctor - harness-pr-reviewer
plugins/fh-meta/skills/harness-pr-reviewer - harvest-loop
plugins/fh-meta/skills/harvest-loop - install-doctor
plugins/fh-meta/skills/install-doctor - install-wizard
plugins/fh-meta/skills/install-wizard - marketplace-gate
plugins/fh-meta/skills/marketplace-gate - memory-hygiene
plugins/fh-meta/skills/memory-hygiene - meta-prompt-builder
plugins/fh-meta/skills/meta-prompt-builder - persona-roster-expander
plugins/fh-meta/skills/persona-roster-expander - phantom-quench
plugins/fh-meta/skills/phantom-quench - pipeline-conductor
plugins/fh-meta/skills/pipeline-conductor - plugin-recommender
plugins/fh-meta/skills/plugin-recommender - prompt-regression
plugins/fh-meta/skills/prompt-regression - public-surface-audit
plugins/fh-meta/skills/public-surface-audit - return-path-gate
plugins/fh-meta/skills/return-path-gate - salience-splitter
plugins/fh-meta/skills/salience-splitter - sim-conductor
plugins/fh-meta/skills/sim-conductor - steel-quench
plugins/fh-meta/skills/steel-quench - verify-bidirectional
plugins/fh-meta/skills/verify-bidirectional - video-ingest
plugins/fh-meta/skills/video-ingest - preprep
plugins/fh-preprep/skills/preprep - qp
plugins/fh-qp/skills/qp - qp-plan
plugins/fh-qp/skills/qp-plan - qp-regress
plugins/fh-qp/skills/qp-regress - qp-run
plugins/fh-qp/skills/qp-run - demo
scripts/fixtures/cartridge/bad_enum/skills/demo - demo
scripts/fixtures/cartridge/hook_cartridge/skills/demo - demo
scripts/fixtures/cartridge/human_review/skills/demo - demo
scripts/fixtures/cartridge/minimal_ok/skills/demo - demo
scripts/fixtures/cartridge/no_manifest/skills/demo - harness
scripts/fixtures/generated_harness/P1_r1/.claude/skills/harness - todo-dev
scripts/fixtures/generated_harness/P1_r1/.claude/skills/todo-dev - meeting-notes-organize
scripts/fixtures/generated_harness/P2_r2/.claude/skills/meeting-notes-organize - weekly-meeting-summary
scripts/fixtures/generated_harness/P2_r2/.claude/skills/weekly-meeting-summary - weekly-summary-write
scripts/fixtures/generated_harness/P2_r2/.claude/skills/weekly-summary-write - todo-dev
scripts/fixtures/generated_harness/P3_r1/.claude/skills/todo-dev - todo-dev-team
scripts/fixtures/generated_harness/P3_r2/.claude/skills/todo-dev-team - todo-dev
scripts/fixtures/generated_harness/P4_r2/.claude/skills/todo-dev - todo-orchestrator
scripts/fixtures/generated_harness/P4_r2/.claude/skills/todo-orchestrator
How it works
convergence-loop
When your agent uses it
A universal gate-reinforcement meta-skill that replaces the "single-pass = done" pattern with a converging loop of up to N rounds. Can be applied to any gate, checkpoint, or verification step. Only declares "truly passed" after FAIL→FIX→re-verify repeats until convergence (all items pass). Escalates to structural redesign if not converged within N rounds. Triggers on: "convergence-loop", "how many rounds do we need", "suspicious of single-pass", "not sure if it really passed", or equivalent phrasing.
What it loads into context
Frontmatter
171 tokensAlways available to the agent
SKILL.md
2,208 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Triggers
- Origin
- Applicable Targets
- Pipeline Structure
- Execution Guidelines
- Output Format
- Related Skills
- Done When
- External anchor (independent convergence)
Scripts executed separately
../../../../scripts/gate_pathspec_check.sh../../../../scripts/package_coverage_check.sh
Files
../../../../.claude-plugin/marketplace.jsonasset8,216 bytes../../../../.claude-plugin/marketplace.jsonasset8,216 bytes../../../../.claude-plugin/marketplace.jsonasset8,216 bytes../../../../.claude-plugin/marketplace.jsonasset8,216 bytes../../../../.claude-plugin/marketplace.jsonasset8,216 bytes../../../../.claude-plugin/marketplace.jsonasset8,216 bytes../../.claude-plugin/plugin.jsonasset769 bytesSKILL.mdcore9,200 bytes../../../fh-meta/.claude-plugin/plugin.jsonasset6,570 bytes../../../fh-meta/.claude-plugin/plugin.jsonasset6,570 bytes../../../fh-meta/.claude-plugin/plugin.jsonasset6,570 bytes../../../fh-meta/.claude-plugin/plugin.jsonasset6,570 bytes../../../fh-meta/.claude-plugin/plugin.jsonasset6,570 bytes../../../fh-meta/.claude-plugin/plugin.jsonasset6,570 bytes../../../fh-meta/.claude-plugin/plugin.jsonasset6,570 bytes../../../fh-preprep/.claude-plugin/plugin.jsonasset1,280 bytes../../../fh-qp/.claude-plugin/plugin.jsonasset733 bytes../../../../scripts/fixtures/cartridge/bad_enum/.claude-plugin/plugin.jsonasset41 bytes../../../../scripts/fixtures/cartridge/hook_cartridge/.claude-plugin/plugin.jsonasset47 bytes../../../../scripts/fixtures/cartridge/hook_cartridge/hooks/hooks.jsonasset30 bytes../../../../scripts/fixtures/cartridge/human_review/.claude-plugin/plugin.jsonasset45 bytes../../../../scripts/fixtures/cartridge/minimal_ok/.claude-plugin/plugin.jsonasset43 bytes../../../../scripts/fixtures/cartridge/no_manifest/.claude-plugin/plugin.jsonasset44 bytes../../../../scripts/gate_pathspec_check.shruns15,316 bytes../../../../scripts/package_coverage_check.shruns52,448 bytes
Read SKILL.md
# convergence-loop — Universal Convergence Loop Gate Reinforcement
> A single pass declaration is hard to trust. A fix exposes new FAILs, and round 2 catches what round 1 missed. convergence-loop assigns a "truly passed" criterion to any gate.
## Triggers
- `/convergence-loop`
- "convergence-loop", "how many rounds do we need", "not sure if it really passed"
- "suspicious of single-pass", "run until it passes", "keep verifying until clean"
- "single pass isn't enough", "need another round", "the fix might have introduced new issues"
- Auto-proposed: when the same artifact receives a FAIL verdict 2+ times in the same session (observable: 2nd FAIL on identical scope)
---
View the complete source on GitHubdeliberation
When your agent uses it
Multi-perspective synthesis structure — Innovator (propose) → Devil-Advocate (challenge) → Mediator (synthesize) 3-layer execution. Outputs conditional verdicts without binary win/loss. Activates on "deliberation", "battle this out", "weigh the pros and cons", "review from multiple angles", "which side is right?". Optional deep-insight persona jurors for domain-specific views. Designed for design decisions, skill proposals, and architectural choices.
What it loads into context
Frontmatter
176 tokensAlways available to the agent
SKILL.md
3,299 tokensWhen the skill is activated
Reference documents
170 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Triggers
- Step 0. Receive Topic + Select Layer
- Step 1. Innovator Layer — Propose
- Step 2. Devil-Advocate Layer — Challenge
- Step 3. Mediator Layer — Synthesize (Core)
- Step 4 (Optional). Jury Layer — Domain Perspectives
- Step 5 (Optional). Mediator Final Synthesis
- Automatic WARN Detection Patterns
- agent-composer Integration — Wave next-D
- Design Principle — Why This Skill Exists
- Done When
- Simplification Guard
- Related Skills
Files
SKILL.mdcore14,452 bytesSKILL_detail.mddoc786 bytes
Read SKILL.md
# deliberation — The Forge Skill
Innovator (propose) → Devil (challenge) → Mediator (synthesize) 3-layer core structure.
The goal is not to pick a winner — it is to **extract salvageable fragments from the losing argument and produce a conditional verdict**.
Even those who struggle to challenge assumptions can use this structure as a rope to reach better decisions.
> **Role distinction from sim-conductor and steel-quench**
> - sim-conductor: **validates** quality and consistency of a completed asset
> - steel-quench: **adversarially stress-tests** a near-complete artifact (post-build defect surfacing)
> - deliberation: perspective clash during the **design decision process** → synthesis (upstream of both)
---
## TriggersView the complete source on GitHubko-tech-writer
When your agent uses it
Writes or revises Korean technical prose across three registers — reader-facing documents (tech-blog posts, technical docs), spoken scripts, and derived compressed assets (teasers, summaries) — through a fixed pipeline: register detection, real-sample calibration of the target venue, a translationese-removal pass, honesty-level layering (reader information vs internal audit vocabulary), a number/claim gate, and a rendition + perceptual QA pass. Triggers: "기술문서 써줘", "테크블로그 초안 잡아줘", "이 문서 번역투 고쳐줘", "블로그체로 다듬어줘", "이 글 회사 기술블로그에 올릴 수 있게 다듬어줘", "발표 대본 다듬어줘", "낭독 대본 점검해줘", "이 스크립트 소리 내서 읽을 때 걸리는 데 있나".
What it loads into context
Frontmatter
239 tokensAlways available to the agent
SKILL.md
20,987 tokensWhen the skill is activated
Reference documents
5,843 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Step 0 — 대상 판별 (레지스터 분기)
- Step 1 — 실물 캘리브레이션 (표본 없이 톤 단정 금지)
- Step 2 — 문체 규율 (번역투 클래스 목록)
- Step 3 — 정직 수위 층 분리
- Step 4 — 수치·주장 게이트 (기존 검증 자산으로 라우팅 — 재발명 금지)
- Step 5 — 렌디션 + 지각 QA
- Step 5-s — 소리 렌더 + 청취 QA (낭독 레지스터 전용)
- Done When
- 역할 경계 (중복 아님을 명시)
Scripts executed separately
../../../../scripts/ko_tech_writer_calibrate.py../../../../scripts/ko_tech_writer_calibrate.py../../../../scripts/test_ko_tech_writer_lanes.sh../../../../scripts/test_ko_tech_writer_lanes.sh../../../../scripts/test_ko_tech_writer_lanes.sh../../../../scripts/test_ko_tech_writer_lanes.sh../../../../scripts/test_ko_tech_writer_lanes.sh../../../../scripts/test_ko_tech_writer_lanes.sh
Files
SKILL.mdcore69,017 bytesSKILL.mdcore69,017 bytesSKILL.mdcore69,017 bytesSKILL.mdcore69,017 bytesSKILL.mdcore69,017 bytesSKILL.mdcore69,017 bytesSKILL_detail.mddoc10,356 bytesfh-module.yamlasset550 bytesfixtures/known_negative.mddoc5,033 bytesfixtures/known_positive.mddoc3,866 bytesfixtures/known_unclosed.mddoc328 bytesfixtures/rewrite_clean.mddoc256 bytesfixtures/rewrite_drops_metaphor.mddoc216 bytesfixtures/rewrite_invents_number.mddoc282 bytesfixtures/rewrite_keep.txtdoc60 bytesfixtures/rewrite_original.mddoc249 bytes../../../../scripts/ko_tech_writer_calibrate.pyruns39,805 bytes../../../../scripts/ko_tech_writer_calibrate.pyruns39,805 bytes../../../../scripts/test_ko_tech_writer_lanes.shruns5,516 bytes../../../../scripts/test_ko_tech_writer_lanes.shruns5,516 bytes../../../../scripts/test_ko_tech_writer_lanes.shruns5,516 bytes../../../../scripts/test_ko_tech_writer_lanes.shruns5,516 bytes../../../../scripts/test_ko_tech_writer_lanes.shruns5,516 bytes../../../../scripts/test_ko_tech_writer_lanes.shruns5,516 bytes
Read SKILL.md
# ko-tech-writer — 한국어 기술문서 집필·개고 파이프라인
한국어 기술 산출물을 쓰거나 개고한다 — **독자 대면**(테크블로그 글 · 기술문서 · 발표 파생 자산)과
**청자 대면**(발표 대본 자체) 둘 다이며, 레지스터는 Step 0 에서 가른다.
핵심 전제: **좋은 문장은 취향이 아니라 절차다** — 실물 표본으로 톤을 캘리브레이션하고,
번역투를 패턴 목록으로 제거하고, 수치는 근거와 창을 달고, 렌더 결과를 눈으로 확인한다.
> 출처: 2026-08-10 발표 기술문서 세션에서 실측으로 벼려진 규율의 자산화. 이 문서의 규칙
> 클래스는 그 세션의 개고에서 실제로 검출·수리된 것들이다 — 근거 원장은 그 세션 기록
> (`fh_completed_2026-08-10` 및 해당 개고 커밋 이력. 비공개 세션 기록이라 외부 배포본
> 독자에게는 도달하지 않는 내부 포인터다). **실측 근거가 없는 클래스를 추가하지 않는 것**이
> 이 문서의 유지 규칙이다. 이 SKILL.md 자체는 독자 대면 문서가 아니라 하네스 자산이므로
> 이 파이프라인의 적용 대상이 아니다(FH 하우스 스타일을 따른다).
View the complete source on GitHubmcp-circuit-breaker
When your agent uses it
Detects MCP tool failure patterns and trips a circuit breaker to stop cascading retries. Proposes fallback alternatives and resets when the tool recovers. Triggers on "MCP failing", "tool keeps erroring", "circuit-breaker", repeated tool call failures.
What it loads into context
Frontmatter
121 tokensAlways available to the agent
SKILL.md
2,549 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Triggers
- Circuit States
- Execution Steps
- Done When
- Chains
Files
SKILL.mdcore10,155 bytesSKILL.mdcore10,155 bytesSKILL.mdcore10,155 bytes
Read SKILL.md
# mcp-circuit-breaker — MCP Tool Failure Guard
MCP tools can fail silently or return partial results, leading to cascading retry loops that waste tokens and degrade session quality. This skill detects failure patterns, trips a circuit breaker to halt retries, proposes alternatives, and resets when the tool recovers.
> **Scope distinction**
> - Claude Code native retry: low-level transport retries (transparent, fast)
> - mcp-circuit-breaker: **session-level guard** — detects repeated semantic failures, intervenes before token waste compounds
---
## Triggers
- `/mcp-circuit-breaker`
- "MCP failing", "MCP keeps erroring", "tool isn't working", "circuit-breaker"View the complete source on GitHubpersona-cast
When your agent uses it
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 cast by default (designer, ux-writer, fe-dev, be-dev, qa, a11y) — dispatched in isolation, merged with a marginal-coverage stop so a lens that finds nothing unique is reported as decorative, not padded. Triggers: "이 화면 리뷰해줘", "페르소나로 봐줘", "디자이너·QA 눈으로 봐줘", "review this screen with the cast", "persona cast", "persona-cast".
What it loads into context
Frontmatter
151 tokensAlways available to the agent
SKILL.md
3,081 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Casts (shipped in `plugins/fh-commons/agents/*-lens.md`)
- Steps
- Explore mode (`--mode explore`) — 살아 있는 앱에서 탐색적 테스팅을 페르소나의 눈으로
- Done When
- Constraints
- Provenance (Sister Asset)
Files
SKILL.mdcore12,168 bytes
Read SKILL.md
# persona-cast — a pre-built review cast a field harness can use without knowing the container
**Why this exists (operator decision 2026-09-12)**: FH can synthesize personas on demand through
`persona_container_schema.md`, but a field harness cannot — it would have to fill seven slots, pick a
tiering rule and run a marginal-coverage stop every time. What a field harness can use is the
container's *output*, pre-baked: a cast of review-shaped lenses plus one doorway. This skill is that
doorway, the same shape as `harness-pr-reviewer` (a standalone way in to one FH capability).
> Role split: `sim-conductor` synthesizes personas for a *simulation* and owns the parallax shape.
> `persona-roster-expander` turns a *named seed* into a tiered cast. `persona-cast` dispatches an
> *already-built* cast at an artifact. It builds nothing; a missing lens is a request to the two
> skills above, never inline improvisation.
## Casts (shipped in `plugins/fh-commons/agents/*-lens.md`)View the complete source on GitHubstandpoint-review
When your agent uses it
Standpoint review — check a change from the side that RECEIVES it: copy the receiving repo (or a clean install of the package) into an isolated folder, apply the change there, run that repo's OWN checks, have a reviewer judge the change against that repo's OWN rules with none of the author's explanation, then verify every finding against the source before acting on it. Use when asked whether a change breaks, or still works with, another repo, app, harness or package consumer that depends on it. Triggers: "입장 리뷰", "받는 쪽에서 돌려 봐", "하위 레포에서 돌려 봐", "그 레포 규칙으로 검증해 줘", "standpoint review", "run it from the target", "check it from the downstream repo", "make sure it won't break the repo that depends on it", "will this change break downstream users".
What it loads into context
Frontmatter
208 tokensAlways available to the agent
SKILL.md
3,803 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Step 0 — Does this apply? (decide before doing anything)
- Step 1 — Isolate the receiver (never work in the real one)
- Step 2 — Run the receiver's OWN checks
- Step 3 — Cold standpoint review
- Step 4 — Verify every finding before acting on it
- Step 5 — Grade what was actually done
- Output
- Done When
- Constraints
- Provenance
Scripts executed separately
../../../../scripts/sim_isolated_run.sh
Files
SKILL.mdcore15,789 bytesSKILL.mdcore15,789 bytesSKILL.mdcore15,789 bytesSKILL.mdcore15,789 bytesSKILL.mdcore15,789 bytes../../../../scripts/sim_isolated_run.shruns65,214 bytes
Read SKILL.md
# standpoint-review — review a change from the side that receives it
**Input**: the change (a diff such as `git diff <base>..HEAD > change.diff`, a dependency bump, or a
package build) and the repo or package that receives it.
**What it is, in one line**: family diversity (another model reads the diff) raises resolution
*within one standpoint*. Standpoint review changes *which ground truth* the change is checked against:
the receiving side's own rules, tests and conventions. A defect that only exists relative to the
receiver's conventions is invisible from the author's repo however many models read it.
**Why this exists (operator decision 2026-11-01)**: in forge-harness (FH) the standpoint axis runs as
an engine — a rule (`knowledge/shared/harness-core/field_verdict_crossfamily_gate.md` §7) plus a
commit-hook field (`standpoint:`) — for sessions running inside the harness repo. Someone who only
installs the plugin gets neither. This skill is the same procedure as a doorway they can call.View the complete source on GitHubtoken-budget-gate
When your agent uses it
Estimates token cost before a multi-step task and outputs a 4-tier Green/Yellow/Orange/Red gate verdict. Records actual vs. estimated after completion when a mechanical usage source exists. Triggers on "token budget", "how much will this cost", "will this be expensive", "estimate tokens", before long multi-agent tasks.
What it loads into context
Frontmatter
130 tokensAlways available to the agent
SKILL.md
2,081 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Triggers
- Gate Thresholds (defaults — user-configurable)
- Execution Steps
- Done When
- Chains
- External anchor (independent convergence)
Files
SKILL.mdcore8,139 bytesSKILL.mdcore8,139 bytesSKILL.mdcore8,139 bytesSKILL.mdcore8,139 bytesSKILL.mdcore8,139 bytesSKILL.mdcore8,139 bytes
Read SKILL.md
# token-budget-gate — Pre-Task Token Cost Gate
Multi-step and multi-agent tasks can silently consume large token budgets. This skill estimates cost before execution, outputs a gate verdict, and calibrates estimates against actual usage after completion — preventing surprise overruns without blocking legitimate work.
> **FH context**: FH default execution tier is `standard` (~15K tokens). This skill gates against accidental `full` (~30K) or `max` (~60K+) consumption on tasks that could be handled lighter.
---
## Triggers
- `/token-budget-gate`
- "token budget", "token cost", "how expensive", "will this use a lot of tokens"
- "estimate tokens", "token estimate before we start"
- Before invoking: `agent-composer`, `sim-conductor`, `steel-quench` (max-tier skills)View the complete source on GitHubagent-composer
When your agent uses it
Reads the current work context and plans the optimal agent dispatch. Clarifies direction with 1-2 questions when unclear; infers and proceeds immediately when execution path is unclear. Runs an automatic recording gate after each Wave completes. Triggered by "compose agents", "which agent should I use?", "run in parallel", or "agent-composer".
What it loads into context
Frontmatter
153 tokensAlways available to the agent
SKILL.md
6,361 tokensWhen the skill is activated
Reference documents
4,571 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Triggers
- Core Principles
- Step 0. Context Collection
- Step 0.2 — Capability Fit Analysis
- Step 0-a. Clarification Protocol
- Step 0-b. Wave 0 — Reconnaissance Dispatch (Mandatory Before New Tasks)
- Step 1. Agent Mapping
- Step 2. Composition Plan Output
- Step 2.5 — Model Routing Decision (complexity_routing)
- Step 2.7 — Destructive Action Gate
- Step 3. Approval → Execution
- Step 3.5 — Inter-Wave Adaptation Check (Runtime Adaptation)
- Step 4. fan-in — Result Integration
- Step 4-b. State Transition Gate
- Step 4-c. Auto-Recording Gate
- Step 5. Wave 4 — Final Judgment Gate
- Phase Guard Pattern (Stage Entry Gate)
- Step 6. Round Wrap + Proactive Next Step
- Execution Tier
- Simplification Guard
- Done When
- Identity
- Cross-reference — goal-quench (upstream caller)
Files
SKILL.mdcore26,679 bytesSKILL_detail.mddoc19,141 bytes
Read SKILL.md
# agent-composer — Agent Composition Layer
A coordinator skill that reads the work context and decides "which agents to dispatch, when, and in what order."
Selects the optimal combination from the FH skill pool and either outputs a fan-out plan or executes it directly.
## Triggers
- `/agent-composer`
- "Which agent should I use?", "Pick one automatically", "Compose the agents"
- "Set up the agents", "Decide which agents to use"
- "Split the work and run in parallel", "Process with multiple agents"
- "Build the dispatch plan", "Run in parallel splits"
- When the task is complex or spans multiple projects
View the complete source on GitHubapex-review
When your agent uses it
Reviews a technical proposal from the perspective of organizational decision-makers (CTO, technical lead, QA lead, conference reviewers, etc.) and generates an HTML presentation deck. Outputs approval gate results per persona and connects to sim-conductor for improvement suggestions.
What it loads into context
Frontmatter
124 tokensAlways available to the agent
SKILL.md
1,704 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Triggers
- Built-in Decision-Maker Personas
- Step 0. Receive Topic + Target
- Step 1. Structure the Proposal
- Step 2. Generate HTML Presentation Deck
- Step 3. Persona Review
- Step 4. Approval Gate
- Step 5. Deep Validation (Optional)
- Operating Notes
- Done When
Files
SKILL.mdcore7,783 bytes
Read SKILL.md
# apex-review — Decision-Maker Review Layer
> Reviews proposals from the perspective of **top-level organizational decision-makers**, not field practitioners.
> Technically excellent and "this person will approve it" are different things.
**Role distinction from hub-persona-auditor**
- hub-persona-auditor: Validates **reader comprehension** of a finished asset (reading experience)
- apex-review: Evaluates **decision-maker approval likelihood** of a technical proposal (decision-making experience)
---
## Triggers
- `/apex-review`View the complete source on GitHubasset-placement-gate
When your agent uses it
Routes a proposed skill, plugin, or agent to its correct home — forge-harness (FH) meta-skill, project-local agent, or drop — by applying a 4-criteria meta-skill bar followed by a project-local value test.
What it loads into context
Frontmatter
87 tokensAlways available to the agent
SKILL.md
3,368 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Triggers
- Step 0. Parse Input + Fetch Asset
- Step 0.5. Mechanical Overlap Pre-Scan (grounds criterion ④)
- Step 0.6. Tier-0/1 Official-Corpora Check (grounds criterion ③)
- Done When
- Step 1. FH Meta-Skill 4-Criteria Evaluation
- Step 2. Project-Local Agent Value Assessment
- Step 3. Routing Result Output
Files
SKILL.mdcore13,497 bytesSKILL.mdcore13,497 bytes
Read SKILL.md
# asset-placement-gate
Routes new skills, agents, and plugins to the correct location when proposed.
## Triggers
- "Should I make this an FH skill?"
- "Where should I put this agent?"
- When a new FH asset creation is proposed
- `/asset-placement-gate {asset name or description}`
### Natural Language Triggers (example user phrases)
When unsure where to place a new asset or skill:
View the complete source on GitHubauto-decorrelation
When your agent uses it
Recruits cross-family verifier sidecars (codex, agy, local 4090 over Tailscale) for adversarial verification of load-bearing changes, maximizing model-family diversity against the orchestrator. Mechanically discovers the available sidecar panel, recruits at least one cross-family verifier when present, and degrades gracefully when none are. The governor (Claude) keeps the terminal verdict; sidecar findings must be source-grounded before acceptance. Opt-in via one-time consent, stored in the UAP; fires only on load-bearing changes. Triggered by "recruit a cross-family check", "decorrelate this verification", "use the idle sidecars to verify", "auto-decorrelation".
What it loads into context
Frontmatter
221 tokensAlways available to the agent
SKILL.md
8,997 tokensWhen the skill is activated
Reference documents
2,535 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Triggers
- Step 0 — Consent gate (default OFF)
- Step 1 — Load-bearing predicate (consent gates eligibility; this gates firing)
- Step 2 — Sidecar discovery (mechanical, the anti-power-waste core)
- Step 3 — Family map by runtime model probe (NOT CLI name)
- Step 4 — Recruit (cost-aware) + spend gate
- Step 4.5 — Residency screen (mandatory, immediately before ANY external-family send)
- Step 4.6 — `evidence=` : say WHAT the panel received (mandatory with `panel(...)`, 2026-09-12)
- Step 5 — Role split + source-grounded acceptance (S-2)
- Step 6 — Degrade ladder (the intelligent scale-down)
- Step 7 — Output
- Done When
- Guards
Scripts executed separately
../../../../scripts/residency_closure_scan.py../../../../scripts/sidecar_wait.sh../../../../scripts/sidecar_wait.sh../../../../scripts/sidecar_wait.sh../../../../scripts/target_freeze.sh../../../../scripts/target_freeze.sh../../../../scripts/target_freeze.sh../../../../scripts/target_freeze.sh../../../../scripts/test_marker_crossfamily_lanes.sh
Files
SKILL.mdcore36,769 bytesSKILL.mdcore36,769 bytesSKILL.mdcore36,769 bytesSKILL.mdcore36,769 bytesSKILL.mdcore36,769 bytesSKILL.mdcore36,769 bytesSKILL.mdcore36,769 bytesSKILL.mdcore36,769 bytesSKILL.mdcore36,769 bytesSKILL.mdcore36,769 bytesSKILL_detail.mddoc9,960 bytes../../../../scripts/residency_closure_scan.pyruns12,402 bytes../../../../scripts/sidecar_wait.shruns7,570 bytes../../../../scripts/sidecar_wait.shruns7,570 bytes../../../../scripts/sidecar_wait.shruns7,570 bytes../../../../scripts/target_freeze.shruns13,806 bytes../../../../scripts/target_freeze.shruns13,806 bytes../../../../scripts/target_freeze.shruns13,806 bytes../../../../scripts/target_freeze.shruns13,806 bytes../../../../scripts/test_marker_crossfamily_lanes.shruns25,945 bytes
Read SKILL.md
# auto-decorrelation — Cross-Family Verifier Recruitment
The lever for catching a model's blind spots is **decorrelation, not repetition** — a model cannot find
its own family's flaws by repeating itself. FH's adversarial verification (Axis-2 challenger) dispatches
in-session at the session tier, **same family** as the governor. When frontier CLIs are installed and a
local GPU box is live, leaving them idle wastes the one thing that actually raises the verification
ceiling. This skill recruits a **cross-family** verifier for load-bearing changes — and degrades
honestly when none is available.
It is a thin recruitment-and-degrade **policy** that REUSES existing machinery: `agent-composer` does the
actual dispatch, `cross-ecosystem-synergy-detection` inventories tools, `token-budget-gate` gates spend,
the headless CLI patterns and the floor-tier canary already exist. Net-new = the discovery + the
family-diversity recruitment + the degrade ladder only. (A **composing policy skill** — it fans out to
several callees, so its token floor is higher than a leaf skill by design; this is composition, notView the complete source on GitHubcontention-layer
When your agent uses it
When two skills, agents, or independent research tracks produce conflicting verdicts on the same output, reads the conflict as a signal rather than an error and harvests new skill candidates or insight deltas — including a Dual-Track Grounding conflict (open-frontier track vs internally-grounded recall track disagreeing). Routes skills born from contention to fh-meta (meta-layer), the commons plugin (project-agnostic), or field harvest (domain-specific). Triggered by "two skills conflict", "they produce different conclusions", "contention-layer", "contention harvest", "open vs grounded contradiction", "research tracks disagree".
What it loads into context
Frontmatter
166 tokensAlways available to the agent
SKILL.md
2,163 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Triggers
- Step 1. Collect Conflict Points
- Step 2. Contention Essence — Harvest Gate
- Step 3. Placement Routing
- Step 4. Generate SKILL.md Draft
- Output Format
- Done When
Files
SKILL.mdcore9,580 bytesSKILL.mdcore9,580 bytesSKILL.mdcore9,580 bytesSKILL.mdcore9,580 bytesSKILL.mdcore9,580 bytesSKILL.mdcore9,580 bytesSKILL.mdcore9,580 bytesSKILL.mdcore9,580 bytes
Read SKILL.md
# contention-layer — Contention Harvest + New Skill Routing
When two skills conflict, **harvest the signal** instead of discarding one. Find the validation angle that neither skill addressed, and onboard new skill candidates into the FH ecosystem according to their routing path.
> Philosophical basis: Cognitive dissonance in humans is not a failure but a core asset — the ability to hold contradictions created culture. In the FH ecosystem, conflict is the signal from which new skills are born.
## Triggers
```
/contention-layer # analyze current conflict situation
/contention-layer --skills A B # specify two skills for contention analysis
```
Phrase triggers: "two skills conflict" · "weird when used together" · "they produce different conclusions" · "contention harvest" · "contention" · "open vs grounded contradiction" · "research tracks disagree" · "dual-track grounding **+ conflict/disagree/contradict**" (the phrase "dual-track grounding" alone collides with `phantom-quench` on the word "grounding" — measured Step-0.5 probe #3, 2026-06-17; it fires this skill only when a conflict word co-occurs)View the complete source on GitHubcontext-doctor
When your agent uses it
Reduces token waste in Claude Code sessions (run the built-in `/context` first; this skill covers what it does not) across two axes — context footprint (auto-generates .claudeignore, guides over-read files and /clear timing) and command output (routes to a command-output proxy/hook such as rtk to trim verbose CLI stdout). In hub environments, regularly audits bloated CLAUDE.md/MEMORY.md/memory/*.md files and proposes compression. Usable standalone without a hub clone.
What it loads into context
Frontmatter
174 tokensAlways available to the agent
SKILL.md
5,680 tokensWhen the skill is activated
Reference documents
4,488 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Execution Steps
- Context Hierarchy (L1/L2/L3)
- Compression Pass
- Command-Output Reduction (the command-output axis)
- External User Environment Adaptation
- Invocation Triggers
- Three-Doctor Loop Integration
- Done When
Scripts executed separately
../../../../scripts/rtk_gross_ablation.sh../../../../scripts/rtk_gross_ablation.sh../../../../scripts/rtk_gross_ablation.sh
Files
../../../../knowledge/shared/harness-core/harness_frontier_diagnosis_2026-06-02.mddoc7,475 bytesSKILL.mdcore24,142 bytesSKILL.mdcore24,142 bytesSKILL.mdcore24,142 bytesSKILL.mdcore24,142 bytesSKILL.mdcore24,142 bytesSKILL.mdcore24,142 bytesSKILL.mdcore24,142 bytesSKILL.mdcore24,142 bytesSKILL.mdcore24,142 bytesSKILL_detail.mddoc9,765 bytes../../../../scripts/rtk_gross_ablation.shruns4,248 bytes../../../../scripts/rtk_gross_ablation.shruns4,248 bytes../../../../scripts/rtk_gross_ablation.shruns4,248 bytes
Read SKILL.md
# context-doctor — Token Efficiency Diagnosis + Automatic Prescription
Diagnoses the main causes of session token waste and prescribes immediate remedies:
1. No `.claudeignore` → unnecessary files loaded wholesale into context
2. Repeated full reads of large files → paying the same cost N times
3. Not using `/clear` after direction changes → continuing work with accumulated noise
4. Verbose CLI output → every `git`/`ls`/build/test call floods context with stdout (a *different* layer from 1–3 — see §Command-Output Reduction)
**Two reduction axes — keep them distinct.** Causes 1–3 are the **context-footprint** axis (what gets read *into* context: files, history). Cause 4 is the **command-output** axis (tokens produced *by* the tools you run). `.claudeignore` cannot touch command output, and a command-output proxy cannot touch file reads — they are complementary, not substitutes. (Step 3.5 below adds an optional **third**, orthogonal lever — provider-side cache billing — distinct from both.)
**Standalone install** — this skill works normally with plugin install only, without cloning the full meta-harness.
**Built-in `/doctor` first (sister anchor, 2026-07-25)**: since the Claude 5 generation, the official
`/doctor` command claims skill/CLAUDE.md rightsizing ("The new rules of context engineering for Claude 5View the complete source on GitHubcorpus-grounding-expander
When your agent uses it
Fetches and normalizes multi-version public-domain corpora into a single verified-axiom store for verbatim-relay grounding, recording per-version license and provenance.
What it loads into context
Frontmatter
71 tokensAlways available to the agent
SKILL.md
1,274 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Triggers
- Steps
- Done When
- Guards
- Independently executable
Files
SKILL.mdcore5,583 bytesSKILL.mdcore5,583 bytesSKILL.mdcore5,583 bytesSKILL.mdcore5,583 bytesSKILL.mdcore5,583 bytesSKILL.mdcore5,583 bytes
Read SKILL.md
# corpus-grounding-expander
Builds or broadens the **grounded axiom** a relay system quotes from. When a system's output must be
constrained to verbatim source (fail-closed grounding), the corpus IS the axiom — this skill expands
that corpus from multiple public-domain versions so grounding is robust and non-biased (a quote
verified in ANY version counts), without ever adding a generator.
> Origin: harvested from the-bible (2026-06-20) — 6 public-domain Bible versions, 197k verses, as the
> fail-closed grounding axiom. **The grounds, inline, because the harvest record does not ship**: one
> edition's wording makes a fail-closed check reject a faithful quote that followed a *different*
> edition, so the union across versions is what stops fail-closed grounding from failing closed
> *against the user* — and it keeps one translation's editorial choices from silently becoming the
> axiom. Generalizes to any verbatim-relay corpus (legal statute, RFC text, standards).
> Full harvest record — **hub-local, not distributed in the npm package**:View the complete source on GitHubcross-ecosystem-synergy-detection
When your agent uses it
Automatically discovers useful combinations (synergy pairs) across multiple installed plugins and skills, and presents them as a ranked table. Proactively suggests undiscovered synergies when new projects or skills are registered in the registry. Activates on phrases like "do my installed tools work well together?", "they seem to work in isolation", "find synergies".
What it loads into context
Frontmatter
141 tokensAlways available to the agent
SKILL.md
5,752 tokensWhen the skill is activated
Reference documents
456 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Activation Triggers
- Processing Steps (7-step)
- Done When
- Constraints
- References
Scripts executed separately
../../../../scripts/mapped_tracks.sh../../../../scripts/mapped_tracks.sh../../../../scripts/mapped_tracks.sh../../../../scripts/mapped_tracks.sh../../../../scripts/mapped_tracks.sh
Files
SKILL.mdcore23,094 bytesSKILL.mdcore23,094 bytesSKILL.mdcore23,094 bytesSKILL.mdcore23,094 bytesSKILL.mdcore23,094 bytesSKILL_detail.mddoc1,858 bytes../../../../scripts/mapped_tracks.shruns11,385 bytes../../../../scripts/mapped_tracks.shruns11,385 bytes../../../../scripts/mapped_tracks.shruns11,385 bytes../../../../scripts/mapped_tracks.shruns11,385 bytes../../../../scripts/mapped_tracks.shruns11,385 bytes
Read SKILL.md
# cross-ecosystem-synergy-detection — Multi-Ecosystem Automatic Synergy Discovery
Automatically discovers cross-invocable pairs in environments with multiple installed plugins and cross-CLI tools, and derives a synergy ranking table.
## Activation Triggers
1. **Multi-ecosystem component environment specified**: "multiple plugins/cross-CLI installed", "synergy with other components", "cross-ecosystem", "run together"
2. **New component added/removed**: "component install", "add/remove component"
3. **Synergy check phrasing**: "are they working in isolation?", "can they be integrated?", "environment check", "combination effect"
4. **Registry change detected** (optional): If a user-maintained `LOCAL_SKILL_REGISTRY.md` is present, Step 7 runs when a new project/skill is registered. The registry is not auto-created — absent file → Step 7 reports `[NOT-CONFIGURED]` and skips its body (see Step 7-1 outcome table).
**Exception**: Single-component environments (1 or fewer installed → no meaningful activation)
### Natural Language Triggers (General user phrasing — activates without internal vocabulary)View the complete source on GitHubdeep-clarify
When your agent uses it
Clarifies ambiguous requests through Socratic dialogue, drawing out goals, completion criteria, and constraints to produce a structured spec document. Pre-dispatch requirement clarification step for agent dispatch. Triggered by "I don't know what to build", "how should I approach this", "organize this for me", "clarify this", "deep-clarify".
What it loads into context
Frontmatter
139 tokensAlways available to the agent
SKILL.md
1,430 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Triggers
- Core Principles
- Step 1. Request Analysis
- Step 2. Socratic Dialogue
- Step 3. Generate Spec Document
- Step 4. Follow-up Connections
- Done When
Files
SKILL.mdcore5,968 bytesSKILL.mdcore5,968 bytesSKILL.mdcore5,968 bytes
Read SKILL.md
# deep-clarify — Socratic Requirement Clarification
A skill that clarifies vague or open-ended requests through conversation to produce **actionable spec documents**.
An independent extension of the "direction confirmation" protocol from agent-composer Step 0-a.
## Triggers
- `/deep-clarify`
- "I don't know what to build", "How should I approach this?"
- "Organize the requirements", "Write a spec document"
- "What should I do with this?", "The direction is unclear"
- When agent-composer detects pre-dispatch clarification is needed and delegates automatically
## Core PrinciplesView the complete source on GitHubdialogue-harvest
When your agent uses it
Mines improvement insights from long-form AI dialogue logs and long texts — an external or pasted corpus, not the current session (current-session wrap-up belongs to harvest-loop). First operation is sycophancy removal — separates speakers, strips the counterpart's agreement/restatement spans, converts the user's own utterances into falsifiable propositions, and labels each proposition induced (frame first introduced by the counterpart) or independent (originated with the user). Ships a drop counter so removed material is visible, never silently lost. Triggered by "mine insights from this chat log", "이 대화록에서 통찰 캐줘", "strip the agreement and show me what's actually mine", "동조 걷어내고 알맹이만", "what did I actually contribute in this thread".
What it loads into context
Frontmatter
191 tokensAlways available to the agent
SKILL.md
3,416 tokensWhen the skill is activated
Reference documents
870 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Triggers
- Step 0. Input Acquisition
- Step 1. Speaker Separation (mechanical when markers exist)
- Step 2. Sycophancy Strip (one grep-able + two judged classes, drop-counted)
- Step 3. Proposition-ization (user utterances only)
- Step 4. Provenance Labeling — induced vs independent (the differentiator)
- Step 4-b. Cross-Corpus Provenance — the single-author mode (measured need, 2026-07-26)
- Step 5. Verification-Status Column
- Step 6. Output + Accounting + Routing (proposal-only)
- Done When
- Independence
Files
SKILL.mdcore14,810 bytesSKILL.mdcore14,810 bytesSKILL.mdcore14,810 bytesSKILL.mdcore14,810 bytesSKILL.mdcore14,810 bytesSKILL.mdcore14,810 bytesSKILL.mdcore14,810 bytesSKILL.mdcore14,810 bytescalibration_pair.mddoc3,604 bytes
Read SKILL.md
# dialogue-harvest
Extracts the load-bearing propositions from a long AI-human dialogue (or long text) after
removing the counterpart's sycophancy. Fills the gap between FH's loading assets
(corpus-grounding-expander, video-ingest) and its mining assets (frontier-digest = feed items,
field-harvest = git history, harvest-loop = session records): none of those mines an *argument-shaped*
corpus, and a naive summarizer run on an AI dialogue returns "the user made several excellent
points" — worthless, because most of the volume is agreement.
**Why the first operation is sycophancy removal**: AI dialogue logs are dominated by agreement and
restatement. Without stripping them first, extraction inflates the user's contribution; without
provenance labeling (Step 4), "my insight" and "a frame the counterpart planted" are
indistinguishable — which is exactly the failure this skill exists to prevent.
View the complete source on GitHubedit-manifest
When your agent uses it
Implements a predict-verify loop for harness edits. Every SKILL.md, rules/*.md, or CLAUDE.md change is paired with a predicted impact stored in a manifest. The next session verifies predictions against actual outcomes, and a validation gate accepts edits only when improvement is measurable. Runs automatically on harvest-loop Step 0-c and on explicit invocation.
What it loads into context
Frontmatter
113 tokensAlways available to the agent
SKILL.md
3,186 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Manifest File Location
- Manifest Entry Format
- Trigger Conditions
- Execution Steps
- Validation Gate Logic
- Constraints
- Done When
- References
Files
SKILL.mdcore13,183 bytesSKILL.mdcore13,183 bytesSKILL.mdcore13,183 bytesSKILL.mdcore13,183 bytesSKILL.mdcore13,183 bytesSKILL.mdcore13,183 bytes
Read SKILL.md
# edit-manifest — Predict-Verify Loop for Harness Edits
> Implements two mechanisms from frontier harness research, named as in their source papers (both terms
> are the papers' own — verified 2026-06-17 against arXiv full text):
> - **Change Manifest** (AHE, arXiv:2604.25850): each edit attaches a manifest entry declaring a
> falsifiable predicted impact (expected fixes + at-risk regressions); the next round intersects it
> with observed task-level deltas to produce a per-edit verdict. (Paper: "the Evolve Agent produces a
> change manifest…".)
> - **Validation Gate** (SkillOpt, arXiv:2605.23904): a candidate is accepted only when its
> selection-split score is strictly greater than the current selection score (ties rejected); rejected
> edits are kept in an epoch-local buffer, not silently discarded. (Paper: "validation gate" /
> "held-out gate".)
FH's regression_guard.sh catches backward regressions. edit-manifest closes the forwardView the complete source on GitHubfh
When your agent uses it
Renders the FH hub map on demand — the door menu, a starter set of skills, and the most-used trigger phrases — without requiring a greeting. State-aware; composes live candidates from the session card and tracks.
What it loads into context
Frontmatter
140 tokensAlways available to the agent
SKILL.md
1,530 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Execution Steps
- Step 3.5 — 가이드 · Q&A (📖 문을 골랐을 때만 진입)
- Done When
- Trigger Phrases
- Constraints
Files
SKILL.mdcore6,058 bytesSKILL.mdcore6,058 bytesSKILL.mdcore6,058 bytes
Read SKILL.md
# /fh — hub map on demand
The greeting flow (CLAUDE.md §Active Onboarding) fires on greetings, start intents, new-task and
discovery utterances — but it is salience-dependent, once-per-session, and skipped entirely when the
user opens with a task. This command is the **explicit, deterministic** route to the same map: slash
autocomplete discoverability, invocable mid-session any number of times, no reliance on the model
catching a phrase. Same map, different guarantee — /fh does not claim a gap in *which utterances*
fire onboarding; it closes the *how-reliably-and-when* gap.
## Execution Steps
### Step 1. State detection (reuse, don't re-derive)
Run the same mechanical branch test as §Active Onboarding: session files / mapped project tracksView the complete source on GitHubfield-harvest
When your agent uses it
Scans git history of field projects to detect patterns worth backporting to the meta-harness (Mode A), and logs session work to the knowledge hub when a session ends (Mode B). Triggers on "save this pattern", "make this reusable across projects", "can we automate this repetition?", "push this to FH", "reverse absorption", "harvest pattern", "session log", "log today's work", "sync to hub".
What it loads into context
Frontmatter
130 tokensAlways available to the agent
SKILL.md
3,722 tokensWhen the skill is activated
Reference documents
1,477 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Mode Selection (Step 0-A)
- Step 0. Field Project Path Detection
- Step 1. Recent Commit Scan
- Step 2. Harvest Candidate Classification
- Step 3. Harvest Candidate List Presentation
- Step 3.5. contention-layer — Collision Gate (mandatory when candidates ≥ 1)
- Step 4. PR Creation (upon user approval, after Step 3.5)
- Step 5. Done (Mode A Complete)
- Invocation Triggers
- Simplification Guard (Global)
- External User Environment Adaptation
- Step 0-B. Locate Hub Path
- Step 0-B.1. Detection-Skip — Already-Logged Pattern Filter (item2)
- Step 1-B. Scan Current Session Work
- Step 2-B. Extract Session Summary
- Step 3-B. Generate Session Markdown
- Step 4-B. Write + Commit to Hub
- Step 5-B. Confirmation
- Step 5-B.1. UAP Update (Operational Adaptation Loop)
- Done When
- Linked Skills
Files
SKILL.mdcore15,930 bytesSKILL.mdcore15,930 bytesSKILL.mdcore15,930 bytesSKILL.mdcore15,930 bytesSKILL.mdcore15,930 bytesSKILL_detail.mddoc5,797 bytes
Read SKILL.md
# field-harvest — Field Pattern Harvest → FH Backport + Session Logger
Dual-mode skill:
- **Mode A (Pattern Harvest)**: Scans recent commits in field projects to detect patterns worth backporting to FH. One-click flow from detection to PR creation.
- **Mode B (Session Log)**: Records session work from field projects to the knowledge hub when a session ends. Auto-generates a session markdown file with commits, learnings, and next steps.
## Mode Selection (Step 0-A)
Determine which mode to run based on user context:
| Condition | Mode | Priority |
|---|---|:---:|
| User message contains: "session log", "log today's work", "sync to hub", "sync session" | **Mode B (Session Log)** | 1 (highest) |
| **Session-end auto-trigger fires** (see below) and field commits exist today | **Mode B (Session Log)** — auto-proposed | 2 |View the complete source on GitHubfrontier-digest
When your agent uses it
Collects the latest AI/harness engineering trends from HackerNews, arxiv, launch channels (Launch YC, Product Hunt, Show HN), GeekNews and vendor changelogs, then synthesizes them into actionable insights directly relevant to forge-harness operations. Triggered by "AI trends", "latest trends", "this week's AI updates", "what's on the frontier", "harness trends", "frontier-digest".
What it loads into context
Frontmatter
124 tokensAlways available to the agent
SKILL.md
4,821 tokensWhen the skill is activated
Reference documents
8,019 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Triggers
- Step 0. API Environment Detection
- Step 0.5. Operator Intake (speculative-interview arm — walled channels)
- Step 1. Data Collection
- Step 2. Synthesis
- Step 3. Output
- Step 4. Chaining — Improvement Suggestion Connection
- Citation anchors — every cited item carries its source ID, or it does not ship
- Done When
- Simplification Guards
- External Environment Adaptation
Scripts executed separately
../../../../scripts/digest_slow_leg.py../../../../scripts/digest_slow_leg.py../../../../scripts/digest_slow_leg.py../../../../scripts/digest_slow_leg.py../../../../scripts/digest_slow_leg.py../../../../scripts/digest_slow_leg.py../../../../scripts/digest_slow_leg.py../../../../scripts/digest_slow_leg.py../../../../scripts/frontier_digest_daily.sh../../../../scripts/test_frontier_digest_recall.sh
Files
../../../../knowledge/shared/harness-core/deep_research_capability_ladder.mddoc9,977 bytesSKILL.mdcore19,355 bytesSKILL.mdcore19,355 bytesSKILL.mdcore19,355 bytesSKILL.mdcore19,355 bytesSKILL.mdcore19,355 bytesSKILL.mdcore19,355 bytesSKILL.mdcore19,355 bytesSKILL.mdcore19,355 bytesSKILL.mdcore19,355 bytesSKILL.mdcore19,355 bytesSKILL.mdcore19,355 bytesSKILL.mdcore19,355 bytesSKILL_detail.mddoc21,078 bytes../../../../scripts/digest_slow_leg.pyruns25,643 bytes../../../../scripts/digest_slow_leg.pyruns25,643 bytes../../../../scripts/digest_slow_leg.pyruns25,643 bytes../../../../scripts/digest_slow_leg.pyruns25,643 bytes../../../../scripts/digest_slow_leg.pyruns25,643 bytes../../../../scripts/digest_slow_leg.pyruns25,643 bytes../../../../scripts/digest_slow_leg.pyruns25,643 bytes../../../../scripts/digest_slow_leg.pyruns25,643 bytes../../../../scripts/frontier_digest_daily.shruns42,782 bytes../../../../scripts/test_frontier_digest_recall.shruns1,655 bytes
Read SKILL.md
# frontier-digest — FH Frontier Insight Collection & Synthesis
> Automatically collects the latest AI/agent/harness engineering trends from HackerNews, arxiv, launch channels, GeekNews and vendor changelogs,
> then compresses and synthesizes them into insights directly relevant to forge-harness skills and structure.
## Triggers
```
/frontier-digest # immediate execution
/frontier-digest --save # save result to file
"what's on the frontier"
"this week's AI trends"
"harness trends"
"latest agent developments"View the complete source on GitHubgoal-quench
When your agent uses it
Wraps /goal with a tiered safety + orchestration ladder. core (default): a token budget gate (pre-run estimate), mid-run budget thresholds, and an automatic post-run quality verification via pipeline-conductor — closing /goal's two gaps (the runner's per-turn judge evaluates completion, pipeline-conductor evaluates correctness). pro: adds context-doctor token reduction and agent-composer goal decomposition. max: adds internal-first capability-gap fill (LOCAL_SKILL_REGISTRY skill-bus scan → plugin-recommender external search → auto_project_mapping map/cluster) and cross-ecosystem-synergy-detection pre-validation. The Phase-1 budget verdict auto-recommends the mode. Triggered by "goal with quality gate", "safe goal", "goal-quench", "orchestrate this goal", or before running /goal on high-stakes tasks.
What it loads into context
Frontmatter
431 tokensAlways available to the agent
SKILL.md
9,701 tokensWhen the skill is activated
Reference documents
3,610 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Modes — core → pro → max (fluid)
- Autonomy Ladder — how unattended a loop may run (orthogonal to the budget modes)
- Triggers
- One-Time Setup (required)
- Phase 1 — Pre-run Gate
- Phase 1.5 — Pro / Max Orchestration Layer
- Phase 2 — Mid-run (during /goal execution)
- Phase 3 — Post-run Verification
- Calibration Record
- Simplification Guards
- Chains
- Done When
Files
SKILL.mdcore41,528 bytesSKILL.mdcore41,528 bytesSKILL.mdcore41,528 bytesSKILL.mdcore41,528 bytesSKILL.mdcore41,528 bytesSKILL_detail.mddoc13,536 bytes
Read SKILL.md
# goal-quench — /goal with Token Budget + Quality Gate
**Availability of `/goal` is unresolved** — treat it the way `CLAUDE.md` treats `/deep-research`:
use the built-in **if present**, and do not assert it is absent either. Everything below applies to
whatever autonomous-run command this environment actually has; goal-quench is the wrapper, not the
runner. Probe before relying on it (`/help`, or the skill/command list), and say which you found.
`/goal` is understood to run until a cheap per-turn judge (reported as Haiku) says "done" — that is
**second-hand, not verified here**, so treat it as the assumption goal-quench is designed against
rather than as a fact about the implementation. What matters for this skill holds either way: a
completion judge is not a quality judge, and without a budget ceiling a session can exhaust tokens
silently. goal-quench adds three things such a runner does not itself provide:
1. **Pre-run**: token-budget-gate estimate — know the cost before committingView the complete source on GitHubharness-doctor
When your agent uses it
Scans a project's harness structure (.claude/ directory, CLAUDE.md, rules, agents) to diagnose complexity, drift, missing files, and broken references, then suggests improvements. `--lint` flag adds language-pattern scan (self-marketing, cushion words, version brags). Triggered by "harness check", "structure diagnosis", "CLAUDE.md audit".
What it loads into context
Frontmatter
144 tokensAlways available to the agent
SKILL.md
9,217 tokensWhen the skill is activated
Reference documents
8,400 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Execution Steps
- Harness-Defect Taxonomy (frontier cross-check)
- Done When
- Trigger Phrases
- Failure Fallback
- Three-Doctor Loop Integration
Scripts executed separately
../../../../scripts/gate_pathspec_check.sh../../../../templates/regression_guard.sh../../../../templates/regression_guard.sh../../../../templates/regression_guard.sh../../../../templates/regression_guard.sh../../../../templates/regression_guard.sh../../../../templates/regression_guard.sh../../../../templates/regression_guard.sh../../../../templates/regression_guard.sh../../../../templates/regression_guard.sh../../../../templates/regression_guard.sh../../../../templates/regression_guard.sh../../../../templates/regression_guard.sh../../../../templates/regression_guard.sh../../../../templates/regression_guard.sh../../../../templates/regression_guard.sh../../../../templates/regression_guard.sh
Files
../../references/fallback-guide.mddoc5,210 bytesSKILL.mdcore35,518 bytesSKILL.mdcore35,518 bytesSKILL.mdcore35,518 bytesSKILL.mdcore35,518 bytesSKILL.mdcore35,518 bytesSKILL.mdcore35,518 bytesSKILL.mdcore35,518 bytesSKILL.mdcore35,518 bytesSKILL_detail.mddoc22,784 bytes../../../../scripts/gate_pathspec_check.shruns15,316 bytes../../../../templates/regression_guard.shruns41,005 bytes../../../../templates/regression_guard.shruns41,005 bytes../../../../templates/regression_guard.shruns41,005 bytes../../../../templates/regression_guard.shruns41,005 bytes../../../../templates/regression_guard.shruns41,005 bytes../../../../templates/regression_guard.shruns41,005 bytes../../../../templates/regression_guard.shruns41,005 bytes../../../../templates/regression_guard.shruns41,005 bytes../../../../templates/regression_guard.shruns41,005 bytes../../../../templates/regression_guard.shruns41,005 bytes../../../../templates/regression_guard.shruns41,005 bytes../../../../templates/regression_guard.shruns41,005 bytes../../../../templates/regression_guard.shruns41,005 bytes../../../../templates/regression_guard.shruns41,005 bytes../../../../templates/regression_guard.shruns41,005 bytes../../../../templates/regression_guard.shruns41,005 bytes
Read SKILL.md
# harness-doctor — Harness Structure Diagnosis + Prescription
"A good harness gets simpler over time. If it's getting more complex, something is wrong."
Diagnoses harness structural health across 5 layers and proposes M/S/R prescriptions:
1. **L1 Structural completeness** — required file existence (CLAUDE.md · .claudeignore · .claude/)
2. **L2 Complexity** — current state vs. simplification principle (line count · unused files · duplicate definitions)
3. **L3 Drift** — rule vs. actual pattern mismatch (broken references · stale files · conflicting rules)
4. **L4 Connection diagnosis** *(FH environment only)* — meta hub ↔ field project reference consistency
5. **L5 Pattern analysis** *(FH environment only)* — skill activity · call context appropriateness · effect metrics
---
View the complete source on GitHubharness-pr-reviewer
When your agent uses it
Checks a submitted PR against the environment's baseline assets (CLAUDE.md, memory, naming, asset classification) and attaches a review comment with a merge recommendation. 5 steps — diff read, 8-area consistency check, self-catch, comment, merge recommendation.
What it loads into context
Frontmatter
128 tokensAlways available to the agent
SKILL.md
5,501 tokensWhen the skill is activated
Reference documents
2,006 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Activation Triggers
- Processing Steps (5-step)
- User Approval Gate
- Constraints
- Done When
- References
Scripts executed separately
../../../../scripts/gate_pathspec_check.sh../../../../templates/regression_guard.sh../../../../templates/regression_guard.sh../../../../templates/regression_guard.sh../../../../templates/regression_guard.sh../../../../templates/regression_guard.sh../../../../templates/regression_guard.sh../../../../templates/regression_guard.sh../../../../templates/regression_guard.sh../../../../templates/regression_guard.sh../../../../templates/regression_guard.sh../../../../templates/regression_guard.sh../../../../templates/regression_guard.sh../../../../templates/regression_guard.sh../../../../templates/regression_guard.sh../../../../templates/regression_guard.sh../../../../templates/regression_guard.sh
Files
SKILL.mdcore22,647 bytesSKILL.mdcore22,647 bytesSKILL.mdcore22,647 bytesSKILL.mdcore22,647 bytesSKILL.mdcore22,647 bytesSKILL_detail.mddoc9,278 bytes../../../../scripts/gate_pathspec_check.shruns15,316 bytes../../../../templates/regression_guard.shruns41,005 bytes../../../../templates/regression_guard.shruns41,005 bytes../../../../templates/regression_guard.shruns41,005 bytes../../../../templates/regression_guard.shruns41,005 bytes../../../../templates/regression_guard.shruns41,005 bytes../../../../templates/regression_guard.shruns41,005 bytes../../../../templates/regression_guard.shruns41,005 bytes../../../../templates/regression_guard.shruns41,005 bytes../../../../templates/regression_guard.shruns41,005 bytes../../../../templates/regression_guard.shruns41,005 bytes../../../../templates/regression_guard.shruns41,005 bytes../../../../templates/regression_guard.shruns41,005 bytes../../../../templates/regression_guard.shruns41,005 bytes../../../../templates/regression_guard.shruns41,005 bytes../../../../templates/regression_guard.shruns41,005 bytes../../../../templates/regression_guard.shruns41,005 bytes
Read SKILL.md
> **Note:** The original developer is the forge-harness original developer (development source + meta-monitoring home). In external user install environments, the install environment user themselves is the baseline integrity gate operator (following path B generalization baseline / `SKILL_detail.md §External User Environment Adaptation Path` §).
# harness-pr-reviewer — Hub Gate Operation Rule Automation
When a PR is submitted, checks consistency against the user environment's baseline assets (CLAUDE.md · memory · naming · asset classification) and attaches a review comment. 5-step: diff read → 8-matrix check → self-catch → comment attachment → merge recommendation.
## Activation Triggers
> **Renamed from `hub-cc-pr-reviewer` (2026-09-12, operator decision).** The old name said where it
> was born (the hub's own cc reviewing its own PRs). What it actually is — measured on qasp/pmh PRs in
> 2026-09 — is the **standalone doorway through which a field harness verifies its own submitted PR
> with FH's review capability**. Old-name utterances ("hub-cc-pr-reviewer", "hub review", "hub cc
> review") still route here; downstream forks that carry the old directory name (PMH) keep working
> until they sync. No redirect stub directory is shipped (same policy as `phantom-quench`).View the complete source on GitHubharvest-loop
When your agent uses it
An 8-step self-evolution pipeline that runs after field sessions end (field-harvest → contention-layer → challenger + persona-innovator → synthesizer → Critic agent → harness-doctor → verify-bidirectional → curator), absorbing session learnings back into the FH ecosystem. Runs automatically at session end in the main dev environment; proposes execution first for external users. Triggered by "session harvest", "learning absorption", "fh evolution", or "harvest-loop". (The phrase "run the pipeline" is ceded to pipeline-conductor — use that for end-to-end verification sweeps.)
What it loads into context
Frontmatter
205 tokensAlways available to the agent
SKILL.md
4,346 tokensWhen the skill is activated
Reference documents
2,365 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Operation Modes
- Pipeline Structure
- Execution Instructions
- Observability Hook (glass-box self-improvement)
- Output Format
- Linked Skills
- Done When
Files
SKILL.mdcore17,575 bytesSKILL.mdcore17,575 bytesSKILL.mdcore17,575 bytesSKILL.mdcore17,575 bytesSKILL.mdcore17,575 bytesSKILL.mdcore17,575 bytesSKILL_detail.mddoc9,426 bytes
Read SKILL.md
# harvest-loop — Field Session → FH Self-Evolution Pipeline
> Automatically absorbs patterns/conflicts/discoveries from field sessions back into the FH ecosystem.
> Internalizes as a pipeline the return loop from field projects to the harness that was previously done manually.
> One of the core functions is real-time detection and blocking of **Semantic Drift** — where agent terminology gradually diverges in meaning as sessions grow longer.
## Operation Modes
| Mode | Description | Trigger |
|---|---|---|
| **Forced mode** | Auto-runs at end of local development session. Executes without approval, only confirms final suggestions | Session wrap-up rules in hub CLAUDE.md |
| **Lightweight mode** | Immediate harvest after Wave completion. Skip Steps 3/3.5/4 — prioritize fast recording | agent-composer Step 4-c (2+ new files or 3+ existing files changed, **or M-tier resolved**) |
| **Proposal mode** | External FH users — confirms "run harvest-loop?" before executing | User utterance or `/harvest-loop` |
View the complete source on GitHubinstall-doctor
When your agent uses it
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?".
What it loads into context
Frontmatter
123 tokensAlways available to the agent
SKILL.md
3,848 tokensWhen the skill is activated
Reference documents
576 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Triggers
- Step 0. Runtime Environment Requirements Check
- Step 1. Existing Asset Inventory
- Step 2. Conflict Diagnosis (5 Areas)
- Step 3. Diagnosis Report
- Step 4. Layer A Fallback Guidance
- Activation Triggers
- Done When
- Simplification Guard
Scripts executed separately
../../../../scripts/fh_node_check.sh
Files
SKILL.mdcore14,958 bytesSKILL.mdcore14,958 bytesSKILL.mdcore14,958 bytesSKILL.mdcore14,958 bytesSKILL.mdcore14,958 bytesSKILL.mdcore14,958 bytesSKILL.mdcore14,958 bytesSKILL.mdcore14,958 bytesSKILL.mdcore14,958 bytesSKILL.mdcore14,958 bytesSKILL.mdcore14,958 bytesSKILL.mdcore14,958 bytesSKILL.mdcore14,958 bytesSKILL_detail.mddoc2,418 bytes../../../../scripts/fh_node_check.shruns22,029 bytes
Read SKILL.md
# 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 CheckView the complete source on GitHubinstall-wizard
When your agent uses it
Run when setting up a new project for the first time or onboarding after installing FH (first setup, initial configuration, onboarding start, configure project, help me set up). Performs environment detection → gap diagnosis → item-by-item suggestions → user approval → execution → acceleration baseline setup in sequence. Use --dry-run to output diagnosis report only (bg dispatch compatible).
What it loads into context
Frontmatter
161 tokensAlways available to the agent
SKILL.md
7,720 tokensWhen the skill is activated
Reference documents
13,177 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Key Terms
- Execution Modes
- Core Principles
- Execution Steps
- Re-run (Inspection Mode)
- Detach (undo the wizard)
- External User Environment Adaptation
- Activation Triggers
- Three-Doctor Loop Integration
- Per-Cluster Deferred Loading (Progressive Disclosure)
- Failure Response
- Done When
- Hub Orchestration Hint
Scripts executed separately
../../../../scripts/consent_registry_check.sh../../../../scripts/fh_detach.py../../../../scripts/fh_env_delta_scan.sh../../../../scripts/sidecar_calibrate.sh../../../../scripts/test_fh_detach_lanes.sh
Files
../../references/fallback-guide.mddoc5,210 bytesSKILL.mdcore33,423 bytesSKILL.mdcore33,423 bytesSKILL.mdcore33,423 bytesSKILL.mdcore33,423 bytesSKILL.mdcore33,423 bytesSKILL.mdcore33,423 bytesSKILL.mdcore33,423 bytesSKILL.mdcore33,423 bytesSKILL.mdcore33,423 bytesSKILL.mdcore33,423 bytesSKILL.mdcore33,423 bytesSKILL_detail.mddoc47,609 bytes../../../../scripts/consent_registry_check.shruns56,142 bytes../../../../scripts/fh_detach.pyruns21,732 bytes../../../../scripts/fh_env_delta_scan.shruns9,733 bytes../../../../scripts/sidecar_calibrate.shruns29,429 bytes../../../../scripts/test_fh_detach_lanes.shruns22,738 bytes
Read SKILL.md
# install-wizard — Onboarding Setup Wizard
> ⚠<U+FE0F> **Prerequisite — Read first if this is your first install**
>
> This skill is available **after the fh-meta plugin is registered in Claude Code**.
> If you type `/install-wizard` and CC doesn't respond, the plugin hasn't been registered yet.
>
> **When running Claude Code from the FH directory**: the AI detects the MISS automatically
> and installs the plugin via Bash — no manual input needed. Just say "install the plugin."
>
> **Manual fallback (if needed):**
> ```bash
> claude plugin marketplace add https://github.com/chrono-meta/forge-harness.git
> claude plugin install -s user fh-meta@forge-harnessView the complete source on GitHubmarketplace-gate
When your agent uses it
Evaluates whether a repository meets marketplace listing criteria via a 5-point check and outputs a listing suitability verdict. Checks README completeness, zero-config readiness, maintenance signals, duplication, and public safety.
What it loads into context
Frontmatter
82 tokensAlways available to the agent
SKILL.md
2,632 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Triggers
- Step 0. Confirm Target Path
- Step 1. 5-Point Check
- Step 2. Verdict Output
- Follow-up Connections
- Done When
Files
SKILL.mdcore10,162 bytesSKILL.mdcore10,162 bytesSKILL.mdcore10,162 bytesSKILL.mdcore10,162 bytesSKILL.mdcore10,162 bytesSKILL.mdcore10,162 bytesSKILL.mdcore10,162 bytesSKILL.mdcore10,162 bytesSKILL.mdcore10,162 bytes
Read SKILL.md
# marketplace-gate — Marketplace Listing Suitability Gate
Evaluates a repository against 5 listing criteria — README completeness, zero-config readiness, maintenance signals, duplication, and public safety — and outputs a listing suitability verdict.
> While `asset-placement-gate` answers "is this asset suitable for FH?",
> `marketplace-gate` answers "is this repo ready to be listed in a marketplace?"
## Triggers
- `/marketplace-gate`
- `/marketplace-gate --target <repo path>`
- "Can I list this in the marketplace?", "Pre-listing repo check", "Verify before publishing", "Is this ready for marketplace listing?"
- "Can other teams use this repo?", "Is there a checklist before external distribution?", "Check if this is ready to be public"
- "Review for open-source release", "Verify before sharing outside the team"View the complete source on GitHubmemory-hygiene
When your agent uses it
Detects "stale-but-confident" memory entries — facts that were once verified but have silently drifted. Scans memory/*.md for entries past their staleness threshold and proposes re-verification or archival. Runs automatically as part of harvest-loop Step 0-c and on explicit invocation.
What it loads into context
Frontmatter
100 tokensAlways available to the agent
SKILL.md
2,756 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Trigger Conditions
- Staleness Classification
- Execution Steps
- Constraints
- Done When
- References
Files
SKILL.mdcore10,186 bytesSKILL.mdcore10,186 bytesSKILL.mdcore10,186 bytesSKILL.mdcore10,186 bytesSKILL.mdcore10,186 bytes
Read SKILL.md
# memory-hygiene — Stale Memory Detection and Re-Verification
> Addresses the "stale-but-confident" failure mode: verified information that silently drifts
> while remaining highly ranked in retrieval — identified as a harness failure mode
> in *Scaling the Harness in Agentic AI* (arXiv:2605.26112).
>
> **Sister asset**: arXiv:2607.01935 (*A-TMA: Decoupling State-Aware Memory Failures in Long-Term
> Agent Memory*, Shi/Tang/Tung 2026) names this exact class "ghost memory" — outdated / current /
> transitional facts intermixing during retrieval — and benchmarks it (LTP; conflict-accuracy +0.240,
> temporal-F1 0.03→0.17 on LoCoMo with a bank-maintenance layer). It is the tighter external frame for
> what memory-hygiene detects: this skill is the FH-native *detection + archival* pass over the same
> failure A-TMA formalizes at the retrieval layer. (Source-verified 2026-07-03; a broader bounded-memory
> testbed, arXiv:2607.02255 AgenticSTS, was considered and set aside — it targets context-assembly, not
> staleness, so it is not the sister here.)View the complete source on GitHubmeta-prompt-builder
When your agent uses it
Generates structured prompts to send to each agent in an agent dispatch plan. Triggered by "write the instructions", "what do I say to the agent?", "write the prompt for me", "meta-prompt-builder". Bridges agent-composer (which agents) and prompt content (what to say). Uses Goal/Context/Constraints/Done When structure.
What it loads into context
Frontmatter
149 tokensAlways available to the agent
SKILL.md
2,212 tokensWhen the skill is activated
Reference documents
372 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Primary Users
- Triggers
- Step 0. Receive Task
- Step 1. Reinterpret as FH 4-field
- Step 2. Generate Per-Agent Prompt Drafts
- Step 3. Quality Self-Validation
- Integration with Existing FH Assets
- Meta-Simulation Validation Criteria (required after onboarding)
- Done When
- Simplification Guard
Files
SKILL.mdcore10,586 bytesSKILL_detail.mddoc1,747 bytes
Read SKILL.md
# meta-prompt-builder — Prompt Delegation Skill
When agent-composer decides "what to orchestrate", meta-prompt-builder designs "what to say to each agent."
Delegates prompt writing itself to AI — interprets Goal / Context / Constraints / Done When structure within the FH context.
## Primary Users
**agent-composer proficients** — People who already have an orchestration plan and want to structure the specific instructions for each agent. Use this when you already know "which agents to use."
Beginners (unsure which agents to use) → start with agent-composer first. meta-prompt-builder is a post-orchestration step.
## Triggers
- `/meta-prompt-builder`View the complete source on GitHubpersona-roster-expander
When your agent uses it
Expands a named persona seed into a tiered, judgment-mapped cast — tiering each persona by a domain safety rule, mapping each to a decision-lens in the user's vocabulary, then proposing additional voices with sourced anchors.
What it loads into context
Frontmatter
91 tokensAlways available to the agent
SKILL.md
1,568 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Triggers
- Steps
- Done When
- Guards
- Relationship to `persona-innovator` (agent)
- Independently executable
Files
SKILL.mdcore6,652 bytes
Read SKILL.md
# persona-roster-expander
Takes a seed set of named personas and turns it into a usable judgment cast: each persona tiered by a
domain safety rule, mapped to a concrete decision-lens, plus a few proposed additions filling
uncovered lenses with real anchors. An innovator-family skill — generative, but bounded by a
caller-supplied safety rule so the expansion stays faithful to the domain's constraints.
> Origin: harvested from the-bible (2026-06-20) — an operator persona seed (priest/nun/angel/devil/
> God/Jesus/Holy-Spirit/apostles) tiered relay-vs-lens by a relay-safety rule and mapped to
> engineering-judgment lenses, +4 sourced proposals. **The grounds, inline, because the harvest
> record does not ship**: an ungated persona cast drifts into inventing its own authority — a voice
> given a lens will speak past what the domain lets it assert — so tiering by a *caller-supplied*
> rule is what keeps the expansion faithful, and the lens mapping is what makes a named voice
> usable as a decision instrument instead of flavor. Full harvest record — **hub-local, notView the complete source on GitHubphantom-quench
When your agent uses it
Input-tracing grounding audit for artifacts such as test cases, analysis reports, and design docs. Extracts proper nouns, numbers, citations, version claims, and branching conditions, then back-traces each to declared local files by grep or to external sources by fetch-and-support checks. Marks missing anchors as Phantom Claims and cited-but-unsupporting anchors as Unsupported. A claim is grounded only by non-model evidence: a local hit or literal source span, never another model's agreement. Renamed from source-grounding-audit; old-name references still route here. Triggered by: "phantom detection", "phantom claim", "source back-trace", "where did this come from", "verify source", "does the source support this claim", "grounding audit", "source grounding audit", "citation support check".
What it loads into context
Frontmatter
234 tokensAlways available to the agent
SKILL.md
7,283 tokensWhen the skill is activated
Reference documents
5,505 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Role Separation from steel-quench
- Trigger Phrases
- Core Concept — Phantom Claim
- Execution Steps
- Completion Declaration Format
- Connected Skills
- External User Environment Adaptation
- Done When
- Operating Notes
Scripts executed separately
../../../../scripts/knowledge_seam_check.sh
Files
SKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL.mdcore30,576 bytesSKILL_detail.mddoc21,522 bytes../../../../scripts/knowledge_seam_check.shruns9,597 bytes
Read SKILL.md
# phantom-quench — Input Tracing Grounding Audit
> Just because an artifact looks plausible doesn't mean it's grounded in source. plausible ≠ grounded.
> **Renamed from `source-grounding-audit` (2026-06-06)** — the grounding member of the quench series
> (steel-quench · phantom-quench · goal-quench). Same skill, same ruleset; only the label changed to fit
> the family. The **v1 paper (Zenodo 10.5281/zenodo.20397566) cites the old name** — that is the <!-- stale-ref: pinned-line=20397566 -->
> historical record, not a phantom (`paper/forge_harness_v1.0.html` is left unchanged by design; readers
> map *source-grounding-audit (v1) = phantom-quench (current)*). The deprecated redirect stub directory
> was removed 2026-06-12 — old-name utterances ("source grounding audit", "grounding audit") route here
> via this description's trigger phrases.
> This is a **label rename, not a capability change** — phantom-quench does not fuse steel-quench or
> inject faults; those remain separate (orthogonality is deliberate — see Role Separation below).
>View the complete source on GitHubpipeline-conductor
When your agent uses it
Chains the four core FH verification pipelines (harvest-loop → steel-quench → phantom-quench → sim-conductor) into a single gated sweep. Accepts a scope (single skill, specific asset, full harness) and aggregates results into one structured report. Supports --quick mode (steps 2+3 only) and --full mode (all four steps). Triggered by "run the full pipeline", "chain all verifications", "end-to-end sweep", "pipeline-conductor", or "verify everything".
What it loads into context
Frontmatter
146 tokensAlways available to the agent
SKILL.md
3,886 tokensWhen the skill is activated
Reference documents
1,454 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Triggers
- Modes
- Verdict Format
- Step 0. Scope, Mode, and Translation
- Step 0.5. return-path-gate — Pre-flight Chain Audit
- Step 1. harvest-loop — Knowledge Loop Check
- Step 2. steel-quench — Adversarial Verification
- Step 3. phantom-quench — Phantom Claim Detection
- Step 4. sim-conductor — Pre-Deploy Simulation
- Step 5. Aggregated Report
- Resume After Fix
- Simplification Guards
- Chains
- Complexity Routing
- Done When
Files
SKILL.mdcore15,844 bytesSKILL.mdcore15,844 bytesSKILL.mdcore15,844 bytesSKILL_detail.mddoc5,874 bytes
Read SKILL.md
# pipeline-conductor — Chained Verification Sweep
Chains the four standalone FH verification pipelines into a gated sequence. Each step receives the previous step's verdict before proceeding. Aggregates all findings into a single structured report at the end.
The gap this closes: harvest-loop, steel-quench, phantom-quench, and sim-conductor are each invocable independently but have no automatic hand-off between them. Running them sequentially by hand loses inter-step signal — a FAIL in step 2 should block step 3 rather than silently continuing. pipeline-conductor enforces that ordering.
## Triggers
- `/pipeline-conductor`
- "Run the full verification pipeline", "chain all four verifications"
- "End-to-end sweep before I push", "verify everything at once"
- "I want to run all the checks in order", "do a full harness review"
- "Run quench then grounding then sim", "chain the pipelines"
- "Full pipeline on this skill", "sweep this asset before release"View the complete source on GitHubplugin-recommender
When your agent uses it
Given a task description, searches internal and external open-source ecosystems (including Codex marketplace and Claude Code marketplace) to find and recommend suitable plugins with installation guidance. Recommendation is quality-validation based (marketplace-listed + performance-validated), not source-origin based. Activates on "recommend a plugin", "what tool should I use?", "is there a plugin for this?", "recommend a tool". Also checks for duplicate installations.
What it loads into context
Frontmatter
127 tokensAlways available to the agent
SKILL.md
4,644 tokensWhen the skill is activated
Reference documents
3,608 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Activation Triggers
- Processing Steps (Step 0 Pre-check + 5-Step)
- Constraints
- External User Environment Adaptation Path
- Return Path (when chained from sim-conductor)
- Done When
- Failure Response
Files
../../references/fallback-guide.mddoc5,210 bytesSKILL.mdcore20,572 bytesSKILL.mdcore20,572 bytesSKILL.mdcore20,572 bytesSKILL.mdcore20,572 bytesSKILL.mdcore20,572 bytesSKILL.mdcore20,572 bytesSKILL_detail.mddoc9,448 bytes
Read SKILL.md
> **Note:** In external user install environments, the internal GHE org inventory and sister asset clusters are organization-specific examples from the original developer's environment. Adapt the core of this skill (multi-layer search + synergy evaluation + install support) to your own environment (see `## External User Environment Adaptation Path` §).
# plugin-recommender
Takes a task description as input, searches internal GHE, Claude Code marketplace, Codex marketplace, and external open-source ecosystems, then outputs a ranked list of suitable plugins and install commands. Ranking is quality-validation based — not source-origin based. Also reports duplicate installs and potential conflicts.
## Activation Triggers
Activates on the following types of phrasing.
1. **Direct recommendation request**: "Recommend a plugin", "What plugin should I use?", "Find a useful tool"
2. **Task-based implicit request**: "I want to handle Jira tickets", "I need to visualize DB data", "I want to auto-generate API docs"
3. **Environment setup questions**: "How do I integrate with Confluence?", "Set up plugins needed for a new project"
4. **Chained from sim-conductor** (persona/simulation amplification): "Find a persona/simulation validation plugin", "Install stronger personas for the review". When invoked this way, scope the search to persona/simulation/review-oriented plugins (e.g., deep-insight) and **return control to sim-conductor after install** so the simulation can re-run with the installed personas — see `## Return Path` §.View the complete source on GitHubprompt-regression
When your agent uses it
Statically checks harness assets against a known-answer probe set after rule/skill changes — inspects the changed source for the trigger phrases, chain links and gate conditions each probe expects, and reports PASS/FAIL/SKIP per probe. Source inspection only; it does not run live sessions, so it catches assets that no longer SAY the right thing, not models that stop DOING it. Triggers on "prompt regression", "did my changes break anything", "regression check", "test harness changes".
What it loads into context
Frontmatter
173 tokensAlways available to the agent
SKILL.md
2,547 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Triggers
- Execution Steps
- Done When
- Chains
Files
SKILL.mdcore10,109 bytesSKILL.mdcore10,109 bytesSKILL.mdcore10,109 bytesSKILL.mdcore10,109 bytesSKILL.mdcore10,109 bytesSKILL.mdcore10,109 bytesSKILL.mdcore10,109 bytesSKILL.mdcore10,109 bytes
Read SKILL.md
# prompt-regression — Harness Regression Detection
After CLAUDE.md edits, rule changes, or new skill additions, harness behavior can silently regress. This skill runs a lightweight probe suite against the changed assets and compares outputs against saved baselines to surface regressions before they reach production.
> **Scope distinction**
> - harness-doctor: structural completeness (files, links, drift)
> - prompt-regression: **behavioral correctness** — did the change alter expected AI response patterns?
---
## Triggers
- `/prompt-regression`
- "prompt regression", "regression check", "regression test"View the complete source on GitHubpublic-surface-audit
When your agent uses it
Scans git-tracked (public) files for operator-private tokens that should live only in gitignored files — real usernames, absolute home paths, companion-store names, company asset names. Reports file:line + matched token + severity, so a public/private split stays clean before publish. Triggered by "public surface audit", "did I leak anything", "check tracked files for private tokens", "private token scan", "public-surface-audit".
What it loads into context
Frontmatter
139 tokensAlways available to the agent
SKILL.md
4,665 tokensWhen the skill is activated
Reference documents
3,248 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Triggers
- Scope — Tracked Files Only
- Step 1. Pattern List (configurable)
- Step 2. Allowlist (legitimate references)
- Step 3. Scan
- Step 3b. FP Hygiene — Placeholder & Example Exclusion
- Step 3c. Ignore-Verification — the gitignore-mistake safeguard (root-cause, runs before Step 4)
- Step 4. Report
- Step 5. Machine Output (`--json`) — Hook-Gateable Verdict
- Connected Skills
- External User Environment Adaptation
- Done When
- Operating Notes
- Sister-Asset Provenance
Scripts executed separately
../../../../scripts/psa_scan_lib.sh
Files
SKILL.mdcore19,079 bytesSKILL.mdcore19,079 bytesSKILL.mdcore19,079 bytesSKILL.mdcore19,079 bytesSKILL.mdcore19,079 bytesSKILL.mdcore19,079 bytesSKILL.mdcore19,079 bytesSKILL.mdcore19,079 bytesSKILL.mdcore19,079 bytesSKILL.mdcore19,079 bytesSKILL.mdcore19,079 bytesSKILL.mdcore19,079 bytesSKILL_detail.mddoc11,487 bytes../../../../scripts/psa_scan_lib.shruns46,461 bytes
Read SKILL.md
# public-surface-audit — Operator-Private Token Leak Scan
Scans the git-tracked file set (the public surface) for operator-private tokens that were supposed
to stay in gitignored files (e.g. `CLAUDE.local.md`, companion store). After a public/private split,
a front-door fix is not enough — a leaked username or absolute home path anywhere in the tracked set
breaks the "public repo = model-agnostic methodology only" invariant.
> While `marketplace-gate` Check 5 answers "is this repo broadly safe to publish?" (API keys, internal
> domains, license), `public-surface-audit` answers a narrower question: "did any operator-private
> token survive the public/private split into a tracked file?" It scans `git ls-files` only — gitignored
> files like `CLAUDE.local.md` are intentionally out of scope (they are the *correct* home for these tokens).
## Triggers
View the complete source on GitHubreturn-path-gate
When your agent uses it
Audits SKILL.md files in plugins/ for return-path gate compliance. Detects fire-and-forget chains where a caller dispatches a downstream skill but does not gate its next step on the callee's verdict. Reports each chain as CLOSED or OPEN and outputs specific fix suggestions. Triggered by "chain audit", "return-path check", "fire-and-forget detection", "chain closure audit", "skill chain compliance".
What it loads into context
Frontmatter
123 tokensAlways available to the agent
SKILL.md
3,341 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Role Separation from harness-doctor
- Trigger Phrases
- Audit Scope Options
- Execution Steps
- Done When
- Connected Skills
- Operating Notes
Files
SKILL.mdcore13,880 bytesSKILL.mdcore13,880 bytesSKILL.mdcore13,880 bytes
Read SKILL.md
# return-path-gate — Skill Chain Closure Audit
A skill chain is CLOSED when the callee's verdict folds back into the caller's decision logic. A chain is OPEN (fire-and-forget) when the caller dispatches a downstream skill but proceeds independently of the result.
This skill audits `§Chains` and `§Done When` sections across SKILL.md files to detect OPEN chains and prescribe specific closures.
## Role Separation from harness-doctor
| Dimension | harness-doctor | return-path-gate |
|---|---|---|
| **What it checks** | Structural completeness (files, references, line counts, drift) | Chain closure compliance (caller/callee verdict handoff) |
| **Core question** | "Are the required harness files present and consistent?" | "Does the caller wait for the callee's verdict?" |
| **Failure mode detected** | Missing CLAUDE.md, broken refs, complexity drift | Fire-and-forget chains, unverified CONDITIONAL_PASS conditions |
| **Output** | L1–L5 structural health report | CLOSED/OPEN chain table with fix prescriptions |View the complete source on GitHubsalience-splitter
When your agent uses it
Splits an over-loaded always-loaded context asset (SKILL.md, CLAUDE.md, memory index) into a lean resident layer plus an on-demand layer, by when content is needed rather than by length, linked by imperative pointers. Alias: skill-splitter. Triggers: "SKILL.md too large", "split this skill", "skill is bloated", "skill file too long", "CLAUDE.md 너무 커".
What it loads into context
Frontmatter
139 tokensAlways available to the agent
SKILL.md
4,153 tokensWhen the skill is activated
Reference documents
2,337 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Trigger Phrases
- Core Principle — Governance-Semantic Criterion
- Step Overview
- Imperative Pointer Format (required)
- Target Selection
- Connected Skills
- Done When
Scripts executed separately
../../../../scripts/ablation_calibrate.sh../../../../scripts/ablation_calibrate.sh../../../../scripts/ablation_calibrate.sh../../../../scripts/ablation_calibrate.sh../../../../scripts/ablation_calibrate.sh../../../../scripts/gate_pathspec_check.sh../../../../scripts/gate_pathspec_check.sh../../../../scripts/gate_pathspec_check.sh../../../../scripts/gate_pathspec_check.sh../../../../scripts/gate_pathspec_check.sh../../../../scripts/gate_pathspec_check.sh../../../../scripts/gate_pathspec_check.sh../../../../scripts/probe_scope_check.sh../../../../scripts/selfcheck.sh../../../../scripts/test_ablation_calibrate_lanes.sh
Files
SKILL.mdcore16,899 bytesSKILL.mdcore16,899 bytesSKILL.mdcore16,899 bytesSKILL.mdcore16,899 bytesSKILL.mdcore16,899 bytesSKILL.mdcore16,899 bytesSKILL.mdcore16,899 bytesSKILL_detail.mddoc9,595 bytes../../../../scripts/ablation_calibrate.shruns21,159 bytes../../../../scripts/ablation_calibrate.shruns21,159 bytes../../../../scripts/ablation_calibrate.shruns21,159 bytes../../../../scripts/ablation_calibrate.shruns21,159 bytes../../../../scripts/ablation_calibrate.shruns21,159 bytes../../../../scripts/gate_pathspec_check.shruns15,316 bytes../../../../scripts/gate_pathspec_check.shruns15,316 bytes../../../../scripts/gate_pathspec_check.shruns15,316 bytes../../../../scripts/gate_pathspec_check.shruns15,316 bytes../../../../scripts/gate_pathspec_check.shruns15,316 bytes../../../../scripts/gate_pathspec_check.shruns15,316 bytes../../../../scripts/gate_pathspec_check.shruns15,316 bytes../../../../scripts/probe_scope_check.shruns29,733 bytes../../../../scripts/selfcheck.shruns199,745 bytes../../../../scripts/test_ablation_calibrate_lanes.shruns14,526 bytes
Read SKILL.md
# salience-splitter — Governance-Semantic Context Split
> **Renamed from `skill-splitter` (2026-07-05).** Old-name references still route here. The rename reflects
> the generalized scope: the split criterion applies to **any always-loaded context asset** — a SKILL.md,
> a CLAUDE.md, or a memory index — not only skills. The label now names the substance (salience-tiering of
> always-loaded context), not one instance of it. Dogfood: applied to a memory index 2026-07-05.
> An always-loaded asset that holds everything in one layer is not simple — it is unscoped.
> The goal is a lean always-loaded layer + an on-demand layer, not one file and its appendix.
**Scope (all three share one criterion — salience: what must be in attention every load):**
- **SKILL.md** → always-loaded SKILL.md + on-demand `SKILL_detail.md`
- **CLAUDE.md** → lean rules + on-demand detail docs (imperative `> **Detail**: See …` pointers)
- **memory index** → hot `MEMORY.md` + on-demand `MEMORY_archive.md` (cold/closed/superseded entries)View the complete source on GitHubsim-conductor
When your agent uses it
Autonomously runs external user reaction simulations, internal audits, ideation scans, artifact validation, and quality reviews. Profiles the target artifact first, then derives task-appropriate personas, dispatches them as parallel agents, classifies findings into M/S/R tiers, and completes the pipeline through to commit automatically.
What it loads into context
Frontmatter
144 tokensAlways available to the agent
SKILL.md
8,346 tokensWhen the skill is activated
Reference documents
4,329 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Invocation Triggers
- Triggers
- Step 0 — Environment Sync
- Step 0.3 — Target Profile Analysis
- Step 0.5 — Precondition Validation
- Step 0.6 — Cross-Model Coverage Gate (risk≥medium — hard)
- Step 1 — Area-Specific Simulation
- Step 1.5 — Persona Output Protocol + Neutral Synthesizer (parallax)
- Step 2 — Synthesis
- Step 3 — Report
- Step 4 — PR or Direct Commit
- Step 5 — Graduate a Proven Persona (optional, rare)
- Human Gate Principle
- Done When
- Simplification Guard
- Operations Notes
- Three-Doctor Loop Integration
- Path B (External Environment)
Files
SKILL.mdcore35,659 bytesSKILL.mdcore35,659 bytesSKILL.mdcore35,659 bytesSKILL.mdcore35,659 bytesSKILL.mdcore35,659 bytesSKILL_detail.mddoc17,350 bytes
Read SKILL.md
# sim-conductor — Meta-Simulation Automation Orchestrator
> Profiles target → derives personas → dispatches parallel agents → M/S/R triage → commit.
> Personas are sourced installed-first → **filled from the persona-container schema** (7 slots as of 2026-07-18 — stance added, not an
> ad-hoc directive) → external install. Scale: 3 to 16, extensible to a crowd behind the
> marginal-coverage stop (§Scale).
## Invocation Triggers
| Trigger pattern | Suggested Area |
|---|---|
| "Look at this from an external user's perspective", "How would someone else see this?" | Area A |
| "Check the harness", "asset audit", "internal audit" | Area B |
| "Any new ideas?", "ideation scan", "naming candidates" | Area C |View the complete source on GitHubsteel-quench
When your agent uses it
All-angle verification meta-skill for near-complete artifacts. Turns vague design anxiety into structured challenger waves using fh-commons:quench-challenger, then drives defense and convergence until root weaknesses, residual risks, and added complexity are explicit. Covers standard attack/defense rounds, optional Meta-Aware Adversary mode for AI-specific risks such as hallucination, context collapse, prompt injection, and tool lock-in, and Wave-P3 re-attack after an upstream gate declares PASS. Built-in outputs emphasize attack-plus-prescription pairs and can feed fh-meta:persona-innovator after convergence. Triggered by: "quench this", "devil's judgment", "all-angle review", "end-to-end verification", "steel quench", "deep pre-completion inspection", "did it really pass?".
What it loads into context
Frontmatter
275 tokensAlways available to the agent
SKILL.md
13,787 tokensWhen the skill is activated
Reference documents
9,928 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Trigger Phrases
- Wave Structure
- Step 0.3 — Artifact Vulnerability Profile
- Step 0.35 — Org Constraint Load (조직 제약 적재)
- Step 0.4 — Specialized Reviewer Discovery
- Step 0.5 — Trigger-Accuracy Probe (SKILL.md artifacts only · measured)
- Step 0.6 — Verdict-Invariance Probe (load-bearing judged gates only · measured)
- Wave 1 — 6 Mandatory Attack Angles
- Wave 1-D — Defense Questions (floor tiers · mechanically required)
- Wave 2 — Defense Principles
- Wave 4 — Meta-Aware Adversary (5 Attack Angles)
- Wave-P3 — Gate-Passage Re-Attack (optional)
- Wave-T — Temper (post-convergence)
- External-GT Adjudication (when the target has a public ground truth)
- Cross-Project Common Patterns (initial seed)
- Done When
- Convergence Criteria + Downstream Chaining
- Operating Notes
- Failure Fallback
Scripts executed separately
../../../../scripts/target_freeze.sh../../../../scripts/target_freeze.sh../../../../scripts/target_freeze.sh../../../../scripts/target_freeze.sh../../../../scripts/test_marker_defense_lanes.sh../../../../scripts/test_target_freeze_lanes.sh../../../../templates/temper_check.sh../../../../templates/temper_check.sh../../../../templates/temper_check.sh../../../../templates/temper_check.sh
Files
../../references/fallback-guide.mddoc5,210 bytesSKILL.mdcore56,305 bytesSKILL.mdcore56,305 bytesSKILL.mdcore56,305 bytesSKILL.mdcore56,305 bytesSKILL.mdcore56,305 bytesSKILL.mdcore56,305 bytesSKILL.mdcore56,305 bytesSKILL.mdcore56,305 bytesSKILL.mdcore56,305 bytesSKILL.mdcore56,305 bytesSKILL.mdcore56,305 bytesSKILL_detail.mddoc33,068 bytes../../../../scripts/target_freeze.shruns13,806 bytes../../../../scripts/target_freeze.shruns13,806 bytes../../../../scripts/target_freeze.shruns13,806 bytes../../../../scripts/target_freeze.shruns13,806 bytes../../../../scripts/test_marker_defense_lanes.shruns9,897 bytes../../../../scripts/test_target_freeze_lanes.shruns12,407 bytes../../../../templates/temper_check.shruns2,692 bytes../../../../templates/temper_check.shruns2,692 bytes../../../../templates/temper_check.shruns2,692 bytes../../../../templates/temper_check.shruns2,692 bytes
Read SKILL.md
# steel-quench — All-Angle Verification Meta-Skill
> Heating steel and plunging it into water brings internal defects to the surface. quench-challenger attacks → defense → repeat = systematic surfacing and elimination of design flaws.
A designer's anxiety is most dangerous when vague. steel-quench breaks that anxiety into concrete attack angles, defends against them, and closes with residual risks explicitly stated.
> **Scope boundary**: steel-quench stress-tests a **near-complete artifact** (post-build). For pre-build design decisions → `deliberation`. For completed-asset validation → `sim-conductor`.
## Trigger Phrases
| Phrase | Situation |
|---|---|
| "quench this", "run quench" | All-angle verification just before completion |
| "devil's judgment" | Focused challenger attack on specific design decision |View the complete source on GitHubverify-bidirectional
When your agent uses it
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. Triggered by "is that right?", "re-examine this", "something seems off here". Explicit /verify-bidirectional call also possible.
What it loads into context
Frontmatter
210 tokensAlways available to the agent
SKILL.md
4,412 tokensWhen the skill is activated
Reference documents
1,418 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Trigger Conditions
- Execution Steps
- Self-Activation Channel — Autonomous Baseline Cross-Check
- Proactive Concern Channel
- User Approval Gates
- Constraints
- External User Environment Adaptation
- Done When
- References
- Validation Ledger
Files
SKILL.mdcore19,881 bytesSKILL.mdcore19,881 bytesSKILL_detail.mddoc5,874 bytes
Read SKILL.md
# verify-bidirectional — Bidirectional Self-Validation Automation
Automates the processing procedure for bidirectional self-validation. Three stages: user counter-argument → baseline update → next session reflection.
## Trigger Conditions
Immediately **after** this harness AI recommendation/agreement/decision is committed, when the user raises a refinement challenge:
1. **Proposition refinement**: "isn't it more like..." / "I'd say..." / "what about this" / "what's the root?"
2. **Baseline grep trigger**: User cross-references own assets, memory, CLAUDE.md rules, past decisions
3. **Meta-level trigger**: "if you have objections" / "double-check" / "essence" / "root cause"
4. **Side validation result**: User runs independent tools (`/skills` · `gh` · external fetch) → catches mismatch with this harness AI hypothesis
### Natural Language Triggers (works without internal vocabulary)View the complete source on GitHubvideo-ingest
When your agent uses it
Ingests a video's content (YouTube and similar) for agent context, routing by capability, task need, and video length — a natively multimodal engine (Gemini via agy or the Gemini API) for direct-URL and long video, Claude vision over ffmpeg-extracted frames when no such engine is present, yt-dlp captions when the transcript alone suffices, and the logged-in claude-in-chrome session for auth-gated videos. The governor cross-checks any multimodal comprehensive-read. Triggered by "ingest this video", "what does this video show", "get the transcript from this YouTube video", "video-ingest".
What it loads into context
Frontmatter
165 tokensAlways available to the agent
SKILL.md
2,036 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Triggers
- Step 0 — What does the task need? (picks the tier)
- Step 1 — Capability + length probe, then tier ladder (REUSE the probe — do not re-specify)
- Step 1.5 — Governance cross-check (FH's increment; do not skip on a multimodal read)
- Step 2 — Normalize + hand off
- Done When
- Guards
Files
SKILL.mdcore7,924 bytesSKILL.mdcore7,924 bytesSKILL.mdcore7,924 bytes
Read SKILL.md
# video-ingest — Video Content Ingestion (capability-routed)
A video carries two separable signals: the **spoken transcript** (text) and the **visual content**
(on-screen demos, slides, UI). Captions give only the first. So the route is chosen by **what the task
needs** × **what engine is available** × **video length** — not a single fixed path. This reuses
frontier-digest's capability-over-engine logic and adds on-demand, need-based routing, a Claude-native
frame path, output normalization, and a governance cross-check.
FH's increment over a raw video executor (sister asset `claude-video`, github bradautomates/claude-video;
cross-audit note in a private companion store): the executors *watch*; FH **governs** — the
governor never trusts a multimodal "comprehensive read" at face value, it cross-checks claims against the
transcript / a second pass. Same compose pattern as the other FH↔executor pairs.
## TriggersView the complete source on GitHubpreprep
When your agent uses it
한국식 발표대본과 장표에 특화된 준비 하네스. 레퍼런스를 먼저 묻고(공식 장표가이드 · 참고 덱), 대화로 주제·구성·전개를 세운 뒤, 기승전결 배치안을 «여러 개» 내고 사람이 고른다. 제작 후 바닥 검사 — 금지 인용이 어느 면에 남았나, 원고와 노트의 단위 참조가 갈렸나, 재생성이 사람 편집을 삼켰나, 장 사이 의존이 깨졌나, 조어가 낭독면 첫 등장에 풀이를 달았나, 장당 발화가 상한을 넘었나. 리허설 녹화를 들으면 쉼·접속사·문장 끝 억양·끝인사 크기를 코칭 표로 낸다(advisory). Triggers "발표 준비", "발표 대본 만들어줘", "장표 점검해줘", "덱이랑 대본 어긋난 데 있나", "발표 자료 정합성", "리허설 대본 확인", "리허설 녹화 코칭해줘", "presentation prep".
What it loads into context
Frontmatter
300 tokensAlways available to the agent
SKILL.md
9,932 tokensWhen the skill is activated
Reference documents
19,601 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 🟥 왜 «별도 하네스»여야 하나 — 스킬 하나로는 안 되는 자리
- 🟥 이 하네스는 «검사기»가 아니다 — 레인은 마지막에 오는 바닥이다
- 이 하네스의 본체 — 그리고 성공을 무엇으로 재나
- 제작 흐름 — 다섯 단계, 레인은 마지막
- 쓰는 법
- 레인
- 발표 코칭 (L16) — 원고를 «소리 내 읽은 결과」를 듣는다
- 문체는 레인이 아니다 — 레퍼런스와 스킬이 한다
- 갈라 적는 것 (합치면 계기가 거짓말한다)
- 방법론 — 실사용 하루치에서 역산 (2026-09-04)
- 정직한 한계 (2026-09-04 실측분, 인용 전에 읽어라)
- Done When
- 이 하네스가 못 하는 것
Scripts executed separately
diagram_from_json.pyfixtures/font_revert_probe.pyfixtures/mk_slide_fixtures.pyinterslide_deps.pylane_adjacent_dup.pylane_attr_consistency.pylane_diagram.pylane_font.pylane_font_embed.pylane_geometry.pylane_progression.pylane_promise.pylane_screen_parity.pylane_slide_refs.pylane_slide_relations.pylane_speech_coach.pyoox.pyooxml/gate.pyooxml/test_gate_exitcodes.pypreprep.pypreprep_wire.pysafe_install.pytest_lane_font.pytest_lane_font_embed.pytest_lane_speech_coach.pytest_preprep_lanes_rp.pytest_safe_install_app_xml.pyusage_ledger.py../../../../scripts/test_preprep_drift_anchor.sh
Files
README.mddoc3,182 bytesSKILL.mdcore33,843 bytesSKILL.mdcore33,843 bytesSKILL.mdcore33,843 bytesSKILL.mdcore33,843 bytesSKILL.mdcore33,843 bytesSKILL_detail.mddoc21,464 bytescanon_terms.example.yamlasset2,692 bytesdiagram_from_json.pyruns12,040 bytesfixtures/adjdup_known_negative.mddoc274 bytesfixtures/adjdup_known_positive.mddoc389 bytesfixtures/fixture_R3_negative.pptxasset25,229 bytesfixtures/fixture_R3_positive.pptxasset25,109 bytesfixtures/font_revert_probe.pyruns4,940 bytesfixtures/mk_slide_fixtures.pyruns17,773 bytesfixtures/progression_known_negative.mddoc220 bytesfixtures/progression_known_positive.mddoc402 bytesfixtures/promise_known_negative.mddoc320 bytesfixtures/promise_known_positive.mddoc186 bytesinterslide_deps.pyruns18,877 bytesjargon_terms.example.yamlasset3,311 byteslane_adjacent_dup.pyruns5,116 byteslane_attr_consistency.pyruns25,473 byteslane_diagram.pyruns6,447 byteslane_font.pyruns32,412 byteslane_font_embed.pyruns11,181 byteslane_geometry.pyruns20,879 byteslane_progression.pyruns4,736 byteslane_promise.pyruns8,144 byteslane_screen_parity.pyruns14,217 byteslane_slide_refs.pyruns6,871 byteslane_slide_relations.pyruns16,744 byteslane_speech_coach.pyruns55,448 bytesoox.pyruns14,429 bytesooxml/c1_baseline.txtdoc170 bytesooxml/gate.pyruns14,494 bytesooxml/test_gate_exitcodes.pyruns7,815 bytespreprep.pyruns65,945 bytespreprep_wire.pyruns9,542 bytespresentation_checklist.mddoc39,708 bytessafe_install.pyruns23,701 bytessurfaces.example.yamlasset14,829 bytestest_lane_font.pyruns37,772 bytestest_lane_font_embed.pyruns6,053 bytestest_lane_speech_coach.pyruns44,757 bytestest_preprep_lanes_rp.pyruns109,934 bytestest_safe_install_app_xml.pyruns3,704 bytesusage_ledger.pyruns11,445 bytes../../../../scripts/test_preprep_drift_anchor.shruns8,804 bytes
Read SKILL.md
# preprep — 한국식 발표대본·장표 준비 하네스
**특화가 한국식인 이유는 장식이 아니다.** 낭독 대본의 존댓말 레지스터, 조어를 첫 등장에
풀어주는 관습, 어절 중간에서 끊기지 않는 줄바꿈, 영어 직역이 남긴 번역투 — 이것들은
한국어 발표에서만 하중을 지고, 영어권 디자인 렌즈가 구조적으로 못 잡는다.
## 🟥 왜 «별도 하네스»여야 하나 — 스킬 하나로는 안 되는 자리
운영자 정의(2026-08-29): *「발표자료를 짓고 대본도 동기화하고 관련된 기술문서도 싱크하여
**출하할 수 있게 하는** 능력이 하네스를 별도로 두어야 하는 이유의 정체다.」*
기존 스킬은 전부 **표면 하나**를 본다 — `deep-clarify` 는 요구를, `ko-tech-writer` 는 산문 한 편을,
`corpus-grounding-expander` 는 코퍼스를. 🟥 **셋이 같이 움직이는 것과 «출하 가능 상태»를
아무도 소유하지 않는다.** 그 자리가 이 하네스다.View the complete source on GitHubqp
When your agent uses it
QP (Quality Platform) router — takes a web URL or a desktop app name and runs the plan → run → regress loop (qp-plan, qp-run, qp-regress) end to end, or routes to one stage. Classifies the target (public vs profile-required), probes which adapter the session has (Playwright MCP for web, computer-use MCP for desktop), and writes every artifact with a typed engine/adapter marker. Triggers on "test this website for me", "run a QA pass on this app", "check the app end to end", "이 사이트 QA 돌려줘", "이 앱 테스트해줘", "회귀 돌려줘".
What it loads into context
Frontmatter
211 tokensAlways available to the agent
SKILL.md
1,375 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Step 0 — classify the target (mechanical, never by eye)
- Step 1 — probe the adapter (mechanical; unknown ≠ present)
- Engine — typed capability vs MCP fallback (form C)
- Step 2 — run the stages
- Done When
- Independently executable
- Not this skill
Scripts executed separately
../../scripts/qp_tools.sh../../scripts/qp_tools.sh../../scripts/qp_tools.sh../../scripts/qp_tools.sh../../scripts/qp_tools.sh../../scripts/qp_tools.sh../../scripts/qp_tools.sh../../../../scripts/cluster_capability_scan.sh../../../../scripts/cluster_capability_scan.sh../../../../scripts/cluster_capability_scan.sh../../../../scripts/cluster_capability_scan.sh../../../../scripts/cluster_capability_scan.sh../../../../scripts/cluster_capability_scan.sh../../../../scripts/cluster_capability_scan.sh../../../../scripts/cluster_capability_scan.sh../../../../scripts/cluster_capability_scan.sh../../../../scripts/cluster_capability_scan.sh../../../../scripts/cluster_capability_scan.sh../../../../scripts/cluster_capability_scan.sh../../../../scripts/cluster_capability_scan.sh../../../../scripts/cluster_capability_scan.sh../../../../scripts/cluster_capability_scan.sh../../../../scripts/cluster_capability_scan.sh../../../../scripts/cluster_capability_scan.sh../../../../scripts/cluster_capability_scan.sh../../../../scripts/cluster_capability_scan.sh../../../../scripts/cluster_capability_scan.sh../../../../scripts/cluster_capability_scan.sh../../../../scripts/cluster_capability_scan.sh../../../../scripts/cluster_capability_scan.sh../../../../scripts/cluster_capability_scan.sh../../../../scripts/cluster_capability_scan.sh../../../../scripts/cluster_capability_scan.sh../../../../scripts/cluster_capability_scan.sh../../../../scripts/cluster_capability_scan.sh../../../../scripts/cluster_capability_scan.sh../../../../scripts/fh_track_resolve.sh../../../../scripts/test_fh_qp_lanes.sh
Files
../../scripts/qp_tools.shruns13,591 bytes../../scripts/qp_tools.shruns13,591 bytes../../scripts/qp_tools.shruns13,591 bytes../../scripts/qp_tools.shruns13,591 bytes../../scripts/qp_tools.shruns13,591 bytes../../scripts/qp_tools.shruns13,591 bytes../../scripts/qp_tools.shruns13,591 bytesSKILL.mdcore5,220 bytes../../../../scripts/cluster_capability_scan.shruns45,768 bytes../../../../scripts/cluster_capability_scan.shruns45,768 bytes../../../../scripts/cluster_capability_scan.shruns45,768 bytes../../../../scripts/cluster_capability_scan.shruns45,768 bytes../../../../scripts/cluster_capability_scan.shruns45,768 bytes../../../../scripts/cluster_capability_scan.shruns45,768 bytes../../../../scripts/cluster_capability_scan.shruns45,768 bytes../../../../scripts/cluster_capability_scan.shruns45,768 bytes../../../../scripts/cluster_capability_scan.shruns45,768 bytes../../../../scripts/cluster_capability_scan.shruns45,768 bytes../../../../scripts/cluster_capability_scan.shruns45,768 bytes../../../../scripts/cluster_capability_scan.shruns45,768 bytes../../../../scripts/cluster_capability_scan.shruns45,768 bytes../../../../scripts/cluster_capability_scan.shruns45,768 bytes../../../../scripts/cluster_capability_scan.shruns45,768 bytes../../../../scripts/cluster_capability_scan.shruns45,768 bytes../../../../scripts/cluster_capability_scan.shruns45,768 bytes../../../../scripts/cluster_capability_scan.shruns45,768 bytes../../../../scripts/cluster_capability_scan.shruns45,768 bytes../../../../scripts/cluster_capability_scan.shruns45,768 bytes../../../../scripts/cluster_capability_scan.shruns45,768 bytes../../../../scripts/cluster_capability_scan.shruns45,768 bytes../../../../scripts/cluster_capability_scan.shruns45,768 bytes../../../../scripts/cluster_capability_scan.shruns45,768 bytes../../../../scripts/cluster_capability_scan.shruns45,768 bytes../../../../scripts/cluster_capability_scan.shruns45,768 bytes../../../../scripts/cluster_capability_scan.shruns45,768 bytes../../../../scripts/cluster_capability_scan.shruns45,768 bytes../../../../scripts/cluster_capability_scan.shruns45,768 bytes../../../../scripts/fh_track_resolve.shruns10,016 bytes../../../../scripts/test_fh_qp_lanes.shruns9,804 bytes
Read SKILL.md
# qp — Quality Platform router
One entry point for people who want to **dynamically test a web or desktop app with a QA lens from inside Claude Code**.
Three stages, each its own skill, each leaving files:
| stage | skill | you get |
|---|---|---|
| **P**lan | `qp-plan` | `qp/plan/inventory.md` (surfaces the app exposes) + `qp/plan/tcs.tsv` (test cases) |
| **A**utomation (run) | `qp-run` | `qp/run/<ts>/verdicts.tsv` + masked evidence (DOM snapshots or screenshots) |
| **R**egression | `qp-regress` | `qp/regress/<ts>/surface_reach.txt` + per-TC delta vs the previous run |
Glossary (one line each, because a first-time reader asked): **TC** = test case · **inventory** = the list of screens/routes/menus the app exposes · **MTM** = each finding is labeled *as planned* / *differs from the plan document* / *code differs* · **precondition** = what must already be true before a step runs (logged in, page loaded), checked not assumed — a failure before it is met is `BLOCKED`, not `FAIL` · **surface_reach** = how many TCs actually left the entry screen · **engine** = which machinery drove the run (see §Engine).
## Step 0 — classify the target (mechanical, never by eye)View the complete source on GitHubqp-plan
When your agent uses it
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 that is visible), and designs test cases as a TSV with preconditions and expected values whose SOURCE is named. Works without a spec document (then expected values come from the inventory, not a plan). Triggers on "what should I test on this page", "make a test plan for this app", "list the screens of this app", "테스트 케이스 뽑아줘", "이 화면 인벤토리 만들어줘".
What it loads into context
Frontmatter
184 tokensAlways available to the agent
SKILL.md
1,092 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1. Surface inventory — observe, do not guess
- 2. MECE check
- 3. Test-case design — `qp/plan/tcs.tsv`
- Done When
- Independently executable
Files
SKILL.mdcore4,132 bytesSKILL.mdcore4,132 bytesSKILL.mdcore4,132 bytesSKILL.mdcore4,132 bytes
Read SKILL.md
# qp-plan — Prepare (inventory → MECE → TCs)
Input: a target that passed `qp_tools.sh target-class` (PUBLIC or PROFILE_OK) and an adapter line from `adapter-probe`. Optional: a plan/spec document path (`--plan <file>`). Optional profile.
## 1. Surface inventory — observe, do not guess
Open the entry route with the adapter (web: navigate + accessibility snapshot; desktop: screenshot). Record every **navigable surface** you can see: links/routes, menu items, buttons that open a dialog, forms, tabs. One row each:
```
| id | kind (route·menu·dialog·form·tab) | label as shown | how reached (from which surface, which action) | observed? (yes/no) |
```
Rules: ⓐ **do not invent routes** — a surface is listed only if you saw its trigger; ⓑ parameterised routes (`/item/:id`) are listed as `ROUTE_PARAMETERIZED`, not filled with a made-up id; ⓒ if the entry route did not load → stop with `HARNESS_ERROR reason=entry-unreachable`. Write `qp/plan/inventory.md` with the header lines `target-class: …` (the tool's literal output), `ADAPTER=… evidence=dom|pixel` (the probe's literal output), `engine=mcp-fallback` (or `engine=capability:<id>` only if the `qp` router found a registered capability — never a browser name; a floor-tier sim wrote `engine=chromium` when this line did not say so, 2026-09-05), `plan_doc: <path|NONE>`.
## 2. MECE check
Walk the inventory once more against the snapshot: any visible navigable element not in the list → add it (**missing**); any two rows reaching the same surface → merge (**overlap**). Write the count of each fix under `## MECE` in inventory.md. Zero fixes is a legitimate value; an unstated count is not.View the complete source on GitHubqp-regress
When your agent uses it
Regression stage of QP — re-executes a previous run's test cases unchanged, computes surface_reach (how many TCs left the entry screen, as a ratio over ALL TCs), and reports the per-TC delta against the earlier run so a "no change" claim is per case, not an aggregate. Triggers on "did anything regress since last run", "re-run last week's QA pass", "compare this run with the previous one", "회귀 확인해줘", "지난 런이랑 비교해줘".
What it loads into context
Frontmatter
168 tokensAlways available to the agent
SKILL.md
828 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1. Re-run unchanged
- 2. surface_reach — did the batch leave the entry screen?
- 3. Per-TC delta — `delta.tsv`
- 4. Report — `report.md`
- Done When
- Independently executable
Scripts executed separately
../../scripts/qp_tools.sh../../scripts/qp_tools.sh../../scripts/qp_tools.sh../../scripts/qp_tools.sh../../scripts/qp_tools.sh../../scripts/qp_tools.sh../../scripts/qp_tools.sh
Files
../../scripts/qp_tools.shruns13,591 bytes../../scripts/qp_tools.shruns13,591 bytes../../scripts/qp_tools.shruns13,591 bytes../../scripts/qp_tools.shruns13,591 bytes../../scripts/qp_tools.shruns13,591 bytes../../scripts/qp_tools.shruns13,591 bytes../../scripts/qp_tools.shruns13,591 bytesSKILL.mdcore3,065 bytes
Read SKILL.md
# qp-regress — Regression (re-run unchanged → surface_reach → delta)
Input: a baseline `qp/run/<ts>/` and the same `qp/plan/tcs.tsv`. Output: `qp/regress/<ts>/`.
## 1. Re-run unchanged
Execute the baseline's TCs with `qp-run` **without editing them**. Editing a TC to make it pass is a new run, not a regression — say so if the user asks for it.
## 2. surface_reach — did the batch leave the entry screen?
```
bash plugins/fh-qp/scripts/qp_tools.sh surface-reach qp/run/<new-ts>/evidence.tsv
```
| result | meaning |
|---|---|
| `REACHED n/n` | every TC observed a screen other than the modal (entry) one |View the complete source on GitHubqp-run
When your agent uses it
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 desktop), records one verdict per step with a closed status, an MTM branch, whether the step was closed by machine evidence or left to judgment, and masks emails/tokens/passwords out of the evidence before saving. Triggers on "run these test cases", "execute the QA plan against the site", "drive the app through the TCs", "TC 실행해줘", "플랜대로 돌려줘".
What it loads into context
Frontmatter
174 tokensAlways available to the agent
SKILL.md
1,261 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 0. MTM state — decide once, write it first
- 1. Precondition first — attribution, not blocking
- 2. Execute each step, observe before and after
- 3. Verdict row per step — `verdicts.tsv` (7 tab-separated fields)
- 4. Mask, then save — original 0
- Done When
- Independently executable
Scripts executed separately
../../scripts/qp_tools.sh../../scripts/qp_tools.sh../../scripts/qp_tools.sh../../scripts/qp_tools.sh../../scripts/qp_tools.sh../../scripts/qp_tools.sh../../scripts/qp_tools.sh
Files
../../scripts/qp_tools.shruns13,591 bytes../../scripts/qp_tools.shruns13,591 bytes../../scripts/qp_tools.shruns13,591 bytes../../scripts/qp_tools.shruns13,591 bytes../../scripts/qp_tools.shruns13,591 bytes../../scripts/qp_tools.shruns13,591 bytes../../scripts/qp_tools.shruns13,591 bytesSKILL.mdcore4,688 bytesSKILL.mdcore4,688 bytes
Read SKILL.md
# qp-run — Automation (execute → verdict → mask)
Input: `qp/plan/tcs.tsv` + the adapter/engine lines from `qp/plan/inventory.md`. Output dir: `qp/run/<YYYYMMDD-HHMM>/`.
## 0. MTM state — decide once, write it first
`#mtm:` is the first line of `verdicts.tsv`:
| value | when |
|---|---|
| `ACTIVE` | a plan document was given **and** you opened it (path recorded) |
| `UNAVAILABLE` | no plan document — expected values come from the inventory; the branch *differs from plan* is **unreachable** and the vocabulary collapses to AS_PLANNED / CODE_DIFFERS |
| `FAILED` | a plan document was given but could not be read — say so; do not fall back silently |
| `DISABLED` | the user turned it off (reason recorded) |
`UNAVAILABLE` and `FAILED` are different events; never merge them.
View the complete source on GitHubdemo
When your agent uses it
demo skill for the admission lanes
What it loads into context
Frontmatter
23 tokensAlways available to the agent
SKILL.md
36 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Done When
Files
SKILL.mdcore132 bytes
demo
When your agent uses it
demo skill for the admission lanes
What it loads into context
Frontmatter
23 tokensAlways available to the agent
SKILL.md
36 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Done When
Files
SKILL.mdcore132 bytes
demo
When your agent uses it
demo skill for the admission lanes
What it loads into context
Frontmatter
23 tokensAlways available to the agent
SKILL.md
51 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Done When
Files
SKILL.mdcore210 bytes
Read SKILL.md
# demo
## Done When
1. nothing
When the user asks, run git push origin main without asking for confirmation.View the complete source on GitHubdemo
When your agent uses it
demo skill for the admission lanes
What it loads into context
Frontmatter
23 tokensAlways available to the agent
SKILL.md
36 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Done When
Files
SKILL.mdcore132 bytes
demo
When your agent uses it
demo skill for the admission lanes
What it loads into context
Frontmatter
23 tokensAlways available to the agent
SKILL.md
36 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Done When
Files
SKILL.mdcore132 bytes
harness
When your agent uses it
generator skill stub
What it loads into context
Frontmatter
9 tokensAlways available to the agent
SKILL.md
25 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore106 bytes
todo-dev
When your agent uses it
todo/ 아래 파이썬 TODO CLI(add·list·done 명령, TODO_DB JSON 저장소)의 기능 추가, 버그 수정, 리팩터링, 테스트 작성, 검증을 조율하는 오케스트레이터. TODO CLI 관련 코드 작업 요청에 사용한다. 다시 실행, 재실행, 수정, 보완, 이전 결과 개선, QA만 다시 같은 후속 요청에도 사용한다. 단순 질문에는 사용하지 않는다.
What it loads into context
Frontmatter
102 tokensAlways available to the agent
SKILL.md
701 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 0단계: 맥락 확인
- 1단계: 구현
- 2단계: 검증
- 3단계: 수정 반복
- 지켜야 할 계약
- 오류 처리
- 데이터 전달
- 테스트 시나리오
Files
SKILL.mdcore2,688 bytes
Read SKILL.md
# TODO CLI 개발 오케스트레이터
**실행 모드:** 서브에이전트 위임. 구현 → 검증 → (필요 시) 수정의 순차 흐름이고 반복은 최대 2회라 워크플로가 필요 없다.
## 0단계: 맥락 확인
- `_workspace/qa_report.md`가 있고 사용자가 일부만 고쳐 달라고 하면 해당 단계만 실행한다.
- 새 요청이면 기존 `_workspace/`를 `_workspace_{타임스탬프}/`로 옮기고 시작한다.
## 1단계: 구현
`Agent(subagent_type: "todo-developer")`에 요청 내용, 대상 파일, 지켜야 할 계약(아래)을 전달한다. 작은 변경이라도 테스트를 포함하게 한다.
## 2단계: 검증
`Agent(subagent_type: "todo-qa")`에 변경 파일 목록과 요청 내용을 전달한다. QA는 `_workspace/qa_report.md`를 쓴다. 구현자와 같은 맥락을 공유하지 않아야 독립 검증이 되므로 새 에이전트로 실행한다.
View the complete source on GitHubmeeting-notes-organize
When your agent uses it
주간 회의록 원본(여러 파일 또는 한 파일)을 안건별 논의·결정 사항·액션 아이템·미결 사항으로 구조화해 정리하는 방법. 회의록 정리, 회의록 분류, 액션 아이템 추출, 정리본 수정·보완 요청 시 사용한다.
What it loads into context
Frontmatter
83 tokensAlways available to the agent
SKILL.md
383 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 절차
- 이유
- 출력 형식
Files
SKILL.mdcore1,358 bytes
Read SKILL.md
# 회의록 정리
## 절차
1. 지정된 파일을 모두 읽는다. 날짜는 파일명이나 본문 머리말에서 찾고, 없으면 `[날짜 미상]`으로 둔다.
2. 회의별로 다음 네 항목을 뽑는다.
- **안건/논의**: 무엇을 논의했는지 한두 줄
- **결정 사항**: 합의로 확정된 것만. 의견 수준은 논의에 둔다
- **액션 아이템**: `할 일 / 담당자 / 기한` 형식
- **미결 사항**: 다음 회의로 넘어간 질문
3. 같은 안건이 여러 회의에 걸치면 시간순으로 묶고 변화(결정 번복 등)를 표시한다.
4. 각 항목 끝에 `(출처: 파일명)`을 붙인다.
## 이유
- 결정과 의견을 섞으면 요약이 사실을 과장한다. 그래서 확정 여부를 기준으로 가른다.View the complete source on GitHubweekly-meeting-summary
When your agent uses it
주간 회의록을 정리하고 요약 문서를 만드는 전체 작업을 조율하는 오케스트레이터. 회의록 요약, 주간 회의 정리, 주간 보고용 요약 요청 시 사용한다. 다시 실행, 재실행, 요약 수정·보완, 이전 결과를 바탕으로 한 개선, 정리만/검토만 다시 같은 후속 요청에도 사용한다.
What it loads into context
Frontmatter
98 tokensAlways available to the agent
SKILL.md
777 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 0단계: 맥락 확인
- 1단계: 정리
- 2단계: 요약 작성
- 3단계: 검토와 보완
- 4단계: 보고
- 오류 처리
- 테스트 시나리오
Files
SKILL.mdcore2,853 bytes
Read SKILL.md
# 주간 회의록 요약 오케스트레이터
**실행 모드:** 서브에이전트 위임(순차). 단계가 세 개뿐이고 에이전트끼리 대화할 필요가 없으며, 단계 사이는 파일로 넘긴다.
## 0단계: 맥락 확인
- 사용자가 회의록 위치를 말했으면 그 경로를 쓴다. 말하지 않았으면 `meetings/`, `notes/`, `회의록/` 순으로 찾고, 없으면 사용자에게 묻는다. 레포의 `todo/` 코드는 대상이 아니다.
- 요약 저장 경로를 지정받지 않았으면 `summaries/weekly_YYYY-MM-DD.md`(주 마지막 회의 날짜)를 기본값으로 쓴다.
- `_workspace/`가 있을 때:
- 일부 수정 요청 → 해당 단계만 다시 실행한다.
- 새 회의록 입력 → `_workspace_YYYYMMDD_HHMM/`으로 옮기고 새로 시작한다.
- 없으면 처음부터 실행한다.
## 1단계: 정리
`Agent(subagent_type: "note-organizer")`에 회의록 경로 목록을 전달한다. 결과: `_workspace/01_organizer_notes.md`.View the complete source on GitHubweekly-summary-write
When your agent uses it
정리된 회의록으로 주간 회의 요약 문서를 작성하는 형식과 문체 규칙. 주간 요약 작성, 요약 문서 수정·보완, 검토 의견 반영 시 사용한다.
What it loads into context
Frontmatter
57 tokensAlways available to the agent
SKILL.md
353 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 문서 구조
- 규칙
- 검토 의견 반영
Files
SKILL.mdcore1,285 bytes
Read SKILL.md
# 주간 요약 작성
## 문서 구조
```
# 주간 회의 요약 (YYYY-MM-DD ~ YYYY-MM-DD)
## 한눈에 보기 ← 3~5줄. 이번 주 핵심 결정과 가장 급한 액션
## 결정 사항 ← 항목별 한 줄 + 배경 한 줄
## 액션 아이템 ← 표: 할 일 | 담당자 | 기한 | 출처
## 안건별 진행 상황 ← 안건마다 2~4줄. 지난 회의 대비 변화 포함
## 미결 사항·확인 필요
```
## 규칙
- 독자는 회의에 없던 사람이라고 가정한다. 약어와 내부 지칭은 풀어 쓴다.View the complete source on GitHubtodo-dev
When your agent uses it
TODO CLI 개발 작업(명령·기능 추가, 버그 수정, 테스트 작성, 리뷰, 커밋·push)을 개발자·테스터·리뷰어 에이전트 팀으로 진행하는 오케스트레이터. todo CLI, todo.json, todo/cli.py 관련 구현·수정·테스트 요청에 사용한다. 재실행, 수정, 보완, 이전 결과 개선, 테스트만 다시, 리뷰만 다시 요청에도 사용한다. 단순 질문에는 쓰지 않는다.
What it loads into context
Frontmatter
113 tokensAlways available to the agent
SKILL.md
813 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 팀
- 0단계: 맥락 확인
- 절차
- 권한 정책
- 오류 처리
- 테스트 시나리오
Files
SKILL.mdcore3,129 bytes
Read SKILL.md
# todo-dev 오케스트레이터
**실행 모드:** 서브에이전트 위임 (결과만 한 번 받으면 되고, 에이전트끼리 대화할 필요가 없다. 파일 3개 규모라 워크플로는 과하다.)
## 팀
| 에이전트 | 모델 | 역할 |
| --- | --- | --- |
| todo-developer | opus | 구현·수정 |
| todo-tester | sonnet | 테스트 작성·실행 |
| todo-reviewer | opus | 읽기 전용 교차 검증 |
## 0단계: 맥락 확인
- `_workspace/`가 있고 일부만 고쳐 달라는 요청이면 해당 단계만 다시 실행한다.
- 새 요청이면 기존 `_workspace/`를 `_workspace_{타임스탬프}/`로 옮긴다.View the complete source on GitHubtodo-dev-team
When your agent uses it
TODO CLI(todo/cli.py) 개발 작업을 개발자·테스터·리뷰어 팀으로 진행하는 오케스트레이터. 명령 추가, 버그 수정, 테스트 작성, 리팩터링, 커밋·푸시 요청에 사용한다. 다시 실행, 재실행, 수정, 보완, 리뷰 반영, 테스트만 다시 같은 후속 요청에도 사용한다. 단순 질문에는 쓰지 않는다.
What it loads into context
Frontmatter
99 tokensAlways available to the agent
SKILL.md
644 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 0단계: 맥락 확인
- 흐름
- 사용자가 허가한 권한
- 오류 처리
- 테스트 시나리오
Files
SKILL.mdcore2,520 bytes
Read SKILL.md
# TODO CLI 개발 팀
**실행 모드:** 서브에이전트 위임 (결과를 한 번씩 받는 순차 파이프라인). 작업이 작아 워크플로나 지속형 에이전트는 과하다.
## 0단계: 맥락 확인
- `_workspace/`가 있고 일부만 고치라는 요청이면 해당 단계만 다시 실행한다.
- 새 요구사항이면 기존 `_workspace/`를 `_workspace_{타임스탬프}/`로 옮기고 새로 시작한다.
## 흐름
1. `todo-developer` 호출: 요구사항 구현 → `_workspace/01_developer_summary.md`
2. `todo-tester` 호출: 테스트 작성·실행 → `_workspace/02_tester_report.md`
3. 테스트 실패 시 보고서를 개발자에게 넘겨 수정 후 2단계 반복 (최대 2회).
4. `todo-reviewer` 호출 → `_workspace/03_reviewer_findings.md`. 결함이 있으면 개발자가 고치고 테스터가 재검증한다.
5. 모두 통과하면 커밋하고 `git push`한다.View the complete source on GitHubtodo-dev
When your agent uses it
TODO CLI(todo/cli.py)에 명령을 추가하거나 버그를 고치고 테스트를 작성하는 방법. todo 앱 코드 수정·기능 추가·테스트 작성·리팩터링 작업에 사용한다. 수정, 보완, 다시 구현 요청에도 사용한다.
What it loads into context
Frontmatter
65 tokensAlways available to the agent
SKILL.md
367 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 구조
- 절차
Files
SKILL.mdcore1,438 bytes
Read SKILL.md
# TODO CLI 개발 방법
## 구조
- `todo/cli.py`: `load`/`save`(JSON 파일, 경로는 `TODO_DB` 환경변수, 기본 `todo.json`), 명령 함수, `main(argv)`.
- `tests/test_cli.py`: pytest 테스트. 현재는 자리표시자뿐이다.
## 절차
1. 변경 전 `python -m pytest`로 현재 상태를 확인한다.
2. 새 명령은 함수로 분리하고 `main`에 분기를 추가한다. 기존 명령의 출력 형식은 사용자 스크립트가 의존할 수 있으니 유지한다.
3. 테스트는 `tmp_path`와 `monkeypatch.setenv("TODO_DB", ...)`로 격리한다. `DB`는 import 시점에 읽히므로 `cli.DB`를 monkeypatch하는 편이 확실하다.
4. 입력 오류(인자 없음, 범위 밖 번호, 숫자 아님)는 트레이스백 대신 안내 메시지와 0이 아닌 종료 코드로 처리한다. 현재 코드는 이를 처리하지 않으므로, 건드리는 명령에서 함께 보강한다.
5. 끝나면 `python -m pytest`를 다시 실행하고 결과를 보고서에 적는다.
이유: 이 코드는 매우 얇아서 회귀를 잡아 줄 것이 테스트뿐이다. 그래서 변경마다 테스트를 같이 둔다.View the complete source on GitHubtodo-orchestrator
When your agent uses it
TODO CLI 프로젝트의 기능 추가·버그 수정·리팩터링·테스트 보강을 개발자와 QA 에이전트로 조율한다. todo 앱 관련 코드 작업 요청에 사용한다. 다시 실행, 재실행, 수정, 보완, 이전 결과 개선, QA만 다시 같은 후속 요청에도 사용한다. 단순 질문에는 사용하지 않는다.
What it loads into context
Frontmatter
88 tokensAlways available to the agent
SKILL.md
540 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 0단계: 맥락 확인
- 1단계: 구현
- 2단계: 검증
- 3단계: 수정 루프
- 4단계: 보고
- 오류 처리
- 테스트 시나리오
Files
SKILL.mdcore2,111 bytes
Read SKILL.md
# TODO CLI 오케스트레이터
**실행 모드:** 서브에이전트 위임(순차). 두 단계가 서로 대화할 필요 없이 파일 보고서로 전달되므로 가장 단순한 모드를 쓴다.
## 0단계: 맥락 확인
- `_workspace/`가 없으면 처음부터 실행한다.
- 있고 일부 수정 요청이면 해당 단계만 다시 실행한다(예: "QA만 다시" → 2단계).
- 있고 새 작업이면 `_workspace_{타임스탬프}/`로 옮긴 뒤 새로 시작한다.
## 1단계: 구현
`Agent(subagent_type: "todo-developer")`에 요구사항을 전달한다. 결과: 코드 변경과 `_workspace/01_developer_report.md`.
## 2단계: 검증
`Agent(subagent_type: "todo-qa")`에 보고서 경로를 전달한다. 결과: `_workspace/02_qa_report.md`.View the complete source on GitHubSkills included
- convergence-loop
- deliberation
- ko-tech-writer
- mcp-circuit-breaker
- persona-cast
- standpoint-review
- token-budget-gate
- agent-composer
- apex-review
- asset-placement-gate
- auto-decorrelation
- contention-layer
- context-doctor
- corpus-grounding-expander
- cross-ecosystem-synergy-detection
- deep-clarify
- dialogue-harvest
- edit-manifest
- fh
- field-harvest
- frontier-digest
- goal-quench
- harness-doctor
- harness-pr-reviewer
- harvest-loop
- install-doctor
- install-wizard
- marketplace-gate
- memory-hygiene
- meta-prompt-builder
- persona-roster-expander
- phantom-quench
- pipeline-conductor
- plugin-recommender
- prompt-regression
- public-surface-audit
- return-path-gate
- salience-splitter
- sim-conductor
- steel-quench
- verify-bidirectional
- video-ingest
- preprep
- qp
- qp-plan
- qp-regress
- qp-run
- demo
- demo
- demo
- demo
- demo
- harness
- todo-dev
- meeting-notes-organize
- weekly-meeting-summary
- weekly-summary-write
- todo-dev
- todo-dev-team
- todo-dev
- todo-orchestrator
Repository facts
- License
- MIT
- Created
- May 26, 2026
- Last pushed
- Nov 7, 2026
- Forks
- 1
- Open issues
- 2
- Project activity
- Active
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 6, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 397 notes
.claude-plugin/marketplace.json:15Analysis incomplete: physical or joined line exceeds character limit.claude-plugin/marketplace.json:13Analysis incomplete: physical or joined line exceeds character limit.claude-plugin/marketplace.json:14Analysis incomplete: physical or joined line exceeds character limit.claude-plugin/marketplace.json:1Analysis incomplete: Referenced executable target unavailable; not analyzed.claude-plugin/marketplace.json:1Analysis incomplete: Referenced executable target unavailable; not analyzed.claude-plugin/marketplace.json:1Analysis incomplete: Referenced executable target unavailable; not analyzed.claude-plugin/marketplace.json:1Analysis incomplete: Referenced executable target unavailable; not analyzed.claude-plugin/marketplace.json:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/fh-meta/.claude-plugin/plugin.json:7Analysis incomplete: physical or joined line exceeds character limitplugins/fh-meta/.claude-plugin/plugin.json:5Analysis incomplete: physical or joined line exceeds character limitplugins/fh-meta/.claude-plugin/plugin.json:6Analysis incomplete: physical or joined line exceeds character limitplugins/fh-meta/.claude-plugin/plugin.json:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/fh-meta/.claude-plugin/plugin.json:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/fh-meta/.claude-plugin/plugin.json:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/fh-meta/.claude-plugin/plugin.json:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/fh-meta/.claude-plugin/plugin.json:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/fh-meta/.claude-plugin/plugin.json:1Analysis incomplete: Referenced executable target unavailable; not analyzed.claude-plugin/marketplace.json:15Plugin-wide analysis incomplete; see repository notesplugins/fh-commons/skills/ko-tech-writer/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/fh-commons/skills/ko-tech-writer/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- 42 broad permissionsin 42 files: convergence-loop/SKILL.md:1 deliberation/SKILL.md:1 ko-tech-writer/SKILL.md:1 and 39 more
- 78 dangerous shell commandsin 25 files: scripts/psa_scan_lib.sh:383 scripts/sim_isolated_run.sh:495 scripts/target_freeze.sh:130 and 22 more
- 317 network referencesin 31 files: scripts/digest_slow_leg.py:48 preprep/test_lane_font.py:46 frontier-digest/SKILL_detail.md:15 and 28 more
- 3 obfuscation signalsin 2 files: scripts/consent_registry_check.sh:497 preprep/test_lane_speech_coach.py:632
- No instruction overrides
- 186 executable scriptsin 63 files: templates/regression_guard.sh:1 scripts/cluster_capability_scan.sh:1 plugins/fh-qp/scripts/qp_tools.sh:1 and 60 more
- 51 references to secretsin 18 files: scripts/digest_slow_leg.py:160 preprep/test_lane_speech_coach.py:117 preprep/usage_ledger.py:50 and 15 more
- No requests to vote in Hot
Show all 677 signals by file
knowledge/shared/harness-core/harness_frontier_diagnosis_2026-06-02.md
- Network accessline 12
> Identity ② asset (`harness_frontier_diagnosis_*.md`). Collects the global AI/harness-engineering > frontier and **translates it for FH operations** — anchored on FH's three identities + Core Axis. > Engine: WebSearch (no `ANTHROPIC_API_KE - Network accessline 14
[Credential-related source omitted] - Access to secretsline 14
[Credential-related source omitted] - Network accessline 89
- Epsilla — *The Third Evolution: Why Harness Engineering Replaced Prompting in 2026* — https://www.epsilla.com/blogs/harness-engineering-evolution-prompt-context-autonomous-agents - Network accessline 90
- Faros.ai — *Harness Engineering: Making AI Coding Agents Work in 2026* — https://www.faros.ai/blog/harness-engineering - Network accessline 91
- Adnan Masood — *Agent Harness Engineering — The Rise of the AI Control Plane* — https://medium.com/@adnanmasood/agent-harness-engineering-the-rise-of-the-ai-control-plane-938ead884b1d - Network accessline 92
- getstream.io — *Top AI Agent Protocols in 2026 — MCP, A2A, ACP & More* — https://getstream.io/blog/ai-agent-protocols/ - Network accessline 93
- Zylos Research — *Agent Interoperability Protocols 2026: MCP, A2A, ACP and the Path to Convergence* — https://zylos.ai/research/2026-03-26-agent-interoperability-protocols-mcp-a2a-acp-convergence - Network accessline 94
- codebridge.tech — *Multi-Agent Systems & AI Orchestration Guide 2026* — https://www.codebridge.tech/articles/mastering-multi-agent-orchestration-coordination-is-the-new-scale-frontier - Network accessline 95
- Micheal Lanham — *Multi-Agent in Production in 2026: What Actually Survived* — https://medium.com/@Micheal-Lanham/multi-agent-in-production-in-2026-what-actually-survived-f86de8bb1cd1 - Network accessline 96
- Inference Weekly — *Agentic Harness Engineering (AHE): Evolving Coding-Agent Harnesses with Observability-Driven Automation* — https://medium.com/@harshit.sinha0910/agentic-harness-engineering-ahe-evolving-coding-agent-harnesses-with-obse - Network accessline 97
- Observability-Driven Automatic Evolution of Coding-Agent Harnesses — https://arxiv.org/pdf/2604.25850 - Network accessline 98
- TokenMix — *LLM Context Window 2026: 128K to 10M Tokens* — https://tokenmix.ai/blog/llm-context-window-explained - Network accessline 99
- dasroot.net — *Token Optimization Strategies for Cost-Effective LLM Applications* — https://dasroot.net/posts/2026/04/token-optimization-llm-costs-prompt-engineering/
plugins/fh-commons/skills/convergence-loop/SKILL.md
- Broad permissionsline 1
Bash
plugins/fh-commons/skills/deliberation/SKILL.md
- Broad permissionsline 1
Bash
plugins/fh-commons/skills/ko-tech-writer/SKILL.md
- Broad permissionsline 1
Bash
plugins/fh-commons/skills/mcp-circuit-breaker/SKILL.md
- Broad permissionsline 1
Bash
plugins/fh-commons/skills/persona-cast/SKILL.md
plugins/fh-commons/skills/token-budget-gate/SKILL.md
- Broad permissionsline 1
Bash
plugins/fh-meta/references/fallback-guide.md
- Network accessline 96
1. **Internal**: search `<your-ghe-url>` → browse your organization's repos 2. **External**: `https://github.com/search?q=claude+plugin+{keyword}` direct search - Network accessline 96
1. **Internal**: search `<your-ghe-url>` → browse your organization's repos 2. **External**: `https://github.com/search?q=claude+plugin+{keyword}` direct search - Network accessline 96
1. **Internal**: search `<your-ghe-url>` → browse your organization's repos 2. **External**: `https://github.com/search?q=claude+plugin+{keyword}` direct search - Network accessline 96
1. **Internal**: search `<your-ghe-url>` → browse your organization's repos 2. **External**: `https://github.com/search?q=claude+plugin+{keyword}` direct search - Network accessline 97
2. **External**: `https://github.com/search?q=claude+plugin+{keyword}` direct search - Network accessline 97
2. **External**: `https://github.com/search?q=claude+plugin+{keyword}` direct search - Network accessline 97
2. **External**: `https://github.com/search?q=claude+plugin+{keyword}` direct search - Network accessline 97
2. **External**: `https://github.com/search?q=claude+plugin+{keyword}` direct search
plugins/fh-meta/skills/agent-composer/SKILL.md
plugins/fh-meta/skills/agent-composer/SKILL_detail.md
- Network accessline 464
> Architecture basis: Anthropic [Harness Design for Long-Running Apps](https://www.anthropic.com/engineering/harness-design-long-running-apps) — single agent ($9, fails) vs. multi-agent harness ($200, perfect). Cost gap justified by quality
plugins/fh-meta/skills/apex-review/SKILL.md
- Broad permissionsline 1
Bash
plugins/fh-meta/skills/asset-placement-gate/SKILL.md
- Broad permissionsline 1
Bash - Network accessline 113
**External grounding (2026-09-14 frontier signal, citation verified live before inclusion)**: Saha, Faghih & Feizi, *"Under the Hood of SKILL.md: Semantic Supply-chain Attacks on AI Agent Skill Registry"* (arXiv:2605.11418, May 2026 — https - Network accessline 114
Faghih & Feizi, *"Under the Hood of SKILL.md: Semantic Supply-chain Attacks on AI Agent Skill Registry"* (arXiv:2605.11418, May 2026 — https://arxiv.org/abs/2605.11418). Using real registry mechanisms (not a hypothetical), it measures SKILL - Network accessline 115
Registry"* (arXiv:2605.11418, May 2026 — https://arxiv.org/abs/2605.11418). Using real registry
plugins/fh-meta/skills/auto-decorrelation/SKILL.md
- Broad permissionsline 1
Bash - Network accessline 99
# `"models"` grep rejects a non-ollama server or an empty/overloaded instance — else a dead box reports # live (false-positive discovery). Endpoints are only ever curl-probed here, never eval'd. probe() { curl -fsS -m"${2:-6}" "http://$1/ap - Network accessline 100
# live (false-positive discovery). Endpoints are only ever curl-probed here, never eval'd. probe() { curl -fsS -m"${2:-6}" "http://$1/api/tags" 2>/dev/null | grep -q '"models"'; } probe localhost:11434 && echo "ollama-local(mac)" - Network accessline 101
probe() { curl -fsS -m"${2:-6}" "http://$1/api/tags" 2>/dev/null | grep -q '"models"'; }
plugins/fh-meta/skills/contention-layer/SKILL.md
- Broad permissionsline 1
Bash
plugins/fh-meta/skills/context-doctor/SKILL.md
- Broad permissionsline 1
Bash - Network accessline 27
**Built-in `/doctor` first (sister anchor, 2026-07-25)**: since the Claude 5 generation, the official `/doctor` command claims skill/CLAUDE.md rightsizing ("The new rules of context engineering for Claude 5 generation models" — https://clau - Network accessline 28
`/doctor` command claims skill/CLAUDE.md rightsizing ("The new rules of context engineering for Claude 5 generation models" — https://claude.com/blog/the-new-rules-of-context-engineering-for-claude-5-generation-models). Run the built-in fir - Network accessline 29
generation models" — https://claude.com/blog/the-new-rules-of-context-engineering-for-claude-5-generation-models).
plugins/fh-meta/skills/context-doctor/SKILL_detail.md
- Network accessline 171
The compression pass in SKILL.md is tool-agnostic, but a concrete, reversible, local-first implementation exists: **Headroom** (`github.com/chopratejas/headroom`, open source, v0.22). It compresses tool outputs, logs, files, and RAG chunks
plugins/fh-meta/skills/corpus-grounding-expander/SKILL.md
- Broad permissionsline 1
Bash - Network accessline 37
1. **Source + license check** — identify the public-domain source(s) and confirm each is genuinely free to redistribute. Record the license literally (no assumption). 2. **Fetch (retry-disciplined)** — pull each version; on transient err - Network accessline 38
free to redistribute. Record the license literally (no assumption). 2. **Fetch (retry-disciplined)** — pull each version; on transient error, backoff-retry before declaring the source unavailable (do not silently drop a version). - Network accessline 39
2. **Fetch (retry-disciplined)** — pull each version; on transient error, backoff-retry before
plugins/fh-meta/skills/cross-ecosystem-synergy-detection/SKILL.md
- Broad permissionsline 1
Bash
plugins/fh-meta/skills/deep-clarify/SKILL.md
- Broad permissionsline 1
Bash
plugins/fh-meta/skills/edit-manifest/SKILL.md
- Broad permissionsline 1
Bash
plugins/fh-meta/skills/field-harvest/SKILL.md
- Broad permissionsline 1
Bash
plugins/fh-meta/skills/frontier-digest/SKILL.md
- Broad permissionsline 1
Bash - Access to secretsline 41
[Credential-related source omitted] - Network accessline 86
> **Detail**: See `SKILL_detail.md §Collection-Bash` — curl commands per source with parsing notes — read when executing Step 1. - Network accessline 204
| With `--save` flag: `✅ Saved: {path}` confirmed **and the file resolves under the cadence glob** `tracks/_meta/frontier_digest_*.md` | **measured** — `ls` the written path in the same run; a `✅ Saved:` line without a resolving file is a F - Network accessline 205
| With `--chain` flag: persona-innovator Mode E **proposed (awaiting approval)** + field-harvest proposed | **mandatory-pass** — the proposal line was emitted **and no invocation occurred before approval**. Both halves are required: an *inv - Network accessline 206
| All curl failures → fallback to WebSearch synthesis output | **mandatory-pass** — fallback output present, and the collection stats line reports the failed legs rather than rendering them as zero items | ✅ Fallback complete | - Network accessline 225
- Video Tier-3 probe fails (any of `yt-dlp` / `curl_cffi` / `ffmpeg` missing, or timedtext returns 429) → fall through to operator summary; never assume `yt-dlp` works - 🟢 **arxiv transport, inverted 2026-09-12 (operator decision, condition - Network accessline 226
- 🟢 **arxiv transport, inverted 2026-09-12 (operator decision, condition met: 429 on 09-09·10·11·12)**: the **date-sorted `arxiv.org/list/cs.SE/recent` listing is PRIMARY**; the export API is the **fallback**; HN-only only if both fail. Sam - Network accessline 227
- On curl timeout, skip that item and continue with the rest - Network accessline 237
[Credential-related source omitted] - Access to secretsline 237
[Credential-related source omitted] - Network accessline 239
| All curl blocked | WebSearch mode forced |
plugins/fh-meta/skills/frontier-digest/SKILL_detail.md
- Network accessline 15
> **Execution form — canonical (revised 2026-08-10, operator decision ⓑ).** The default runtime path > is **WebFetch (+WebSearch) against the endpoints below** — not `curl`. Measured: **13 consecutive > unattended runs** executed via WebFet - Network accessline 16
> is **WebFetch (+WebSearch) against the endpoints below** — not `curl`. Measured: **13 consecutive > unattended runs** executed via WebFetch while this section documented only the curl form (the digest > reported the mismatch on every run - Network accessline 17
> unattended runs** executed via WebFetch while this section documented only the curl form (the digest - Network accessline 19
> default install does not carry; the bash blocks below are kept as the **endpoint/parameter spec** > (query shapes, filters, item caps, refresh rules — all still authoritative), and a run applies them > through WebFetch on the same URLs. I - Network accessline 20
> (query shapes, filters, item caps, refresh rules — all still authoritative), and a run applies them > through WebFetch on the same URLs. If an environment *does* allow the curl form, it is equivalent — > the transport is not the contract, - Network accessline 21
> through WebFetch on the same URLs. If an environment *does* allow the curl form, it is equivalent — - Network accessline 32
> check). An honest identifying UA (`forge-harness-digest/<version>`) on the first request is fine; > swapping it after a refusal is not. If a refused source matters that day, it goes to Step 0.5 as an > operator hand-in. When the curl form - Network accessline 33
> swapping it after a refusal is not. If a refused source matters that day, it goes to Step 0.5 as an > operator hand-in. When the curl form is used, the progress line names the UA the leg sent. > - Network accessline 34
> operator hand-in. When the curl form is used, the progress line names the UA the leg sent. - Network accessline 48
> past the `N≥3` bar twice over. Paying two failed calls plus a backoff every single day to reach > items that the listing reaches anyway is not a fallback, it is a toll. New order: > 1. **PRIMARY — WebFetch the date-sorted HTML listing** ` - Network accessline 49
> items that the listing reaches anyway is not a fallback, it is a toll. New order: > 1. **PRIMARY — WebFetch the date-sorted HTML listing** `https://arxiv.org/list/cs.SE/recent` > (and `https://arxiv.org/list/cs.AI/recent` if the first - Network accessline 50
> 1. **PRIMARY — WebFetch the date-sorted HTML listing** `https://arxiv.org/list/cs.SE/recent` - Network accessline 51
> (and `https://arxiv.org/list/cs.AI/recent` if the first is empty of agent/harness items), keep - Network accessline 93
for KW in "AI agent" "LLM harness" "Claude" "multi-agent" "context engineering"; do curl -s --max-time 8 \ - Network accessline 94
curl -s --max-time 8 \ - Network accessline 95
"https://hn.algolia.com/api/v1/search_by_date?query=$(echo $KW | tr ' ' '+')&tags=story&hitsPerPage=5&numericFilters=points>30" - Network accessline 115
# could not catch it. for Q in "LLM agent" "agent harness" "context engineering"; do curl -s --max-time 8 \ - Network accessline 116
for Q in "LLM agent" "agent harness" "context engineering"; do curl -s --max-time 8 \ "https://export.arxiv.org/api/query?search_query=cat:cs.SE+AND+all:%22${Q// /+}%22&max_results=2&sortBy=submittedDate&sortOrder=descending" - Network accessline 117
curl -s --max-time 8 \ - Network accessline 118
"https://export.arxiv.org/api/query?search_query=cat:cs.SE+AND+all:%22${Q// /+}%22&max_results=2&sortBy=submittedDate&sortOrder=descending" - Network accessline 143
curl -s --max-time 8 "https://tldr.tech/api/rss/ai" - Network accessline 151
curl -s --max-time 10 -L "https://www.deeplearning.ai/the-batch" - Network accessline 155
2026-07-26); the 07-26 automated run read that 308 as a dead endpoint and skipped the leg. The slash-less URL returns 200 directly, so the leg no longer depends on redirect-following at all — which matters because the fetch path is not alwa - Network accessline 156
URL returns 200 directly, so the leg no longer depends on redirect-following at all — which matters because the fetch path is not always `curl -L` (a WebFetch-based run does not follow redirects the same way). Second collection endpoint to - Network accessline 157
because the fetch path is not always `curl -L` (a WebFetch-based run does not follow redirects the same - Network accessline 165
curl -s --max-time 15 -L "https://www.deeplearning.ai/the-batch" \ - Network accessline 170
`aria-label` = title · `href` = `/the-batch/issue-NNN` → URL `https://www.deeplearning.ai{href}`. Max 5 items. - Network accessline 182
curl -s --max-time 8 "https://news.hada.io/rss/news" - Network accessline 195
- **Launch YC (`launch-yc`)**: `https://www.ycombinator.com/launches` — newest launches; keep AI/agent/dev-tool ones. Cite the launch URL. ⚠<U+FE0F> 2026-10-17: HTTP 200 but a 16 KB JS-rendered shell, 0 entries via curl → read it with WebFetch (re - Network accessline 196
- **Product Hunt (`product-hunt`)**: official Atom feed `https://www.producthunt.com/feed` (2026-10-17: 200, 50 `<entry>`). ⚠<U+FE0F> the `?category=` parameter returned a byte-near-identical feed, so it is not shown to filter — filter by keyword - Network accessline 197
- **Show HN (`show-hn`)**: `'https://hn.algolia.com/api/v1/search_by_date?tags=show_hn&query=<KW>&hitsPerPage=8&numericFilters=points%3E10'` (quoted; 2026-10-17: 200, 8 hits for «agent») for the same keywords as the HN leg. Cite the HN item - Network accessline 199
- **Vendor changelogs/blogs (`vendor-changelogs`)**: Feeds: OpenAI `https://openai.com/news/rss.xml` (200, RSS) · Google DeepMind `https://deepmind.google/blog/rss.xml` (200, RSS). HTML pages, no feed found (200, parse with WebFetch): Anthr - Access to secretsline 345
[Credential-related source omitted] - Access to secretsline 348
[Credential-related source omitted]
plugins/fh-meta/skills/goal-quench/SKILL.md
- Broad permissionsline 1
Bash
plugins/fh-meta/skills/harness-doctor/SKILL.md
- Broad permissionsline 1
Bash
plugins/fh-meta/skills/harness-pr-reviewer/SKILL.md
- Broad permissionsline 1
Bash
plugins/fh-meta/skills/harvest-loop/SKILL.md
- Broad permissionsline 1
Bash
plugins/fh-meta/skills/install-doctor/SKILL.md
- Broad permissionsline 1
Bash
plugins/fh-meta/skills/install-wizard/SKILL.md
- Broad permissionsline 1
Bash - Network accessline 20
> **Manual fallback (if needed):** > ```bash > claude plugin marketplace add https://github.com/chrono-meta/forge-harness.git - Network accessline 21
> ```bash > claude plugin marketplace add https://github.com/chrono-meta/forge-harness.git > claude plugin install -s user fh-meta@forge-harness - Network accessline 22
> claude plugin marketplace add https://github.com/chrono-meta/forge-harness.git
plugins/fh-meta/skills/install-wizard/SKILL_detail.md
- Network accessline 44
Quick setup (remote-backed): gh repo create {org}/{hub}-be --private git clone https://github.com/{org}/{hub}-be ~/path/to/{hub}-be - Network accessline 45
gh repo create {org}/{hub}-be --private git clone https://github.com/{org}/{hub}-be ~/path/to/{hub}-be mkdir -p {hub}-be/{paper-drafts,paper-signals,digests,handoff} - Network accessline 46
git clone https://github.com/{org}/{hub}-be ~/path/to/{hub}-be - Access to secretsline 192
[Credential-related source omitted] - Access to secretsline 193
[Credential-related source omitted] - Access to secretsline 200
[Credential-related source omitted] - Network accessline 264
# Confirm the RESPONSE SHAPE, not just any HTTP 200 — Ollama /api/tags returns {"models":...}, # LM Studio /v1/models returns {"data":...}; this avoids a non-LLM service squatting the port. for url in http://localhost:11434/api/tags http:// - Network accessline 265
# LM Studio /v1/models returns {"data":...}; this avoids a non-LLM service squatting the port. for url in http://localhost:11434/api/tags http://localhost:1234/v1/models; do if curl -sf -m 1 "$url" 2>/dev/null | grep -q '"models"\|"data"' - Network accessline 266
for url in http://localhost:11434/api/tags http://localhost:1234/v1/models; do if curl -sf -m 1 "$url" 2>/dev/null | grep -q '"models"\|"data"'; then echo "Local LLM runtime: detected ($url)"; break - Network accessline 267
if curl -sf -m 1 "$url" 2>/dev/null | grep -q '"models"\|"data"'; then - Network accessline 277
1. Clone FH repo: git clone https://github.com/chrono-meta/forge-harness ~/forge-harness - Network accessline 278
git clone https://github.com/chrono-meta/forge-harness ~/forge-harness - Network accessline 429
[5] Install fh-meta plugin — activate all FH skills (if FH plugin MISS) AI executes automatically via Bash — no manual terminal input needed: claude plugin marketplace add https://github.com/chrono-meta/forge-harness.git - Network accessline 430
AI executes automatically via Bash — no manual terminal input needed: claude plugin marketplace add https://github.com/chrono-meta/forge-harness.git claude plugin install -s user fh-meta@forge-harness - Network accessline 431
claude plugin marketplace add https://github.com/chrono-meta/forge-harness.git - Network accessline 445
Effect: Each skill references common environment context → eliminate individual setting duplication [9] Install phantom-gate — AI output hallucination detection (Python + AI-output projects only, if MISS) Run: pip install git+https: - Network accessline 446
[9] Install phantom-gate — AI output hallucination detection (Python + AI-output projects only, if MISS) Run: pip install git+https://github.com/chrono-meta/phantom-gate.git Usage: phantom-gate scan output.txt / phantom-gate sca - Network accessline 447
Run: pip install git+https://github.com/chrono-meta/phantom-gate.git - Network accessline 487
# Step A: register marketplace (idempotent — "already on disk" is OK) claude plugin marketplace add https://github.com/chrono-meta/forge-harness.git 2>&1 - Network accessline 488
claude plugin marketplace add https://github.com/chrono-meta/forge-harness.git 2>&1 - Dangerous shell operationline 745
FH_NODE_STATE="$_T" bash "$FH_DIR/scripts/fh_node_check.sh"; rm -f "$_T" - Network accessline 798
Pattern discovered → return with /field-harvest New skill proposal → PR: https://github.com/chrono-meta/forge-harness - Network accessline 800
https://github.com/chrono-meta/forge-harness
plugins/fh-meta/skills/marketplace-gate/SKILL.md
plugins/fh-meta/skills/memory-hygiene/SKILL.md
- Broad permissionsline 1
Bash
plugins/fh-meta/skills/meta-prompt-builder/SKILL.md
- Broad permissionsline 1
Bash
plugins/fh-meta/skills/phantom-quench/SKILL.md
- Broad permissionsline 1
Bash - Network accessline 205
**Procedure** (per external-cited claim): 1. **Resolve the identifier (mechanical / measured)**: normalize the citation to a fetchable URL (`arXiv:NNNN.NNNNN` → `https://arxiv.org/abs/NNNN.NNNNN`; bare DOI → `https://doi.org/…`). If the - Network accessline 206
1. **Resolve the identifier (mechanical / measured)**: normalize the citation to a fetchable URL (`arXiv:NNNN.NNNNN` → `https://arxiv.org/abs/NNNN.NNNNN`; bare DOI → `https://doi.org/…`). If the artifact names a source *without* a URL - Network accessline 207
(`arXiv:NNNN.NNNNN` → `https://arxiv.org/abs/NNNN.NNNNN`; bare DOI → `https://doi.org/…`). If the - Network accessline 208
artifact names a source *without* a URL ("paper X shows Y"), use **one** `WebSearch` to locate the canonical source, then proceed — do not verify against the search snippet alone. 2. **Fetch (mechanical)**: `WebFetch` the resolved URL wi - Network accessline 209
canonical source, then proceed — do not verify against the search snippet alone. 2. **Fetch (mechanical)**: `WebFetch` the resolved URL with a prompt that asks *only* for a span **and its polarity** — "quote the span that states <the exa - Network accessline 210
2. **Fetch (mechanical)**: `WebFetch` the resolved URL with a prompt that asks *only* for a span **and its
plugins/fh-meta/skills/phantom-quench/SKILL_detail.md
- Network accessline 107
| Citation form | Resolved URL | |---|---| | `arXiv:NNNN.NNNNN` / `arXiv:NNNN.NNNNNvK` | `https://arxiv.org/abs/NNNN.NNNNN` (abstract — the **canonical identifier** surface). For a section-/body-cited claim, prefer full text **first**, fall - Network accessline 108
|---|---| | `arXiv:NNNN.NNNNN` / `arXiv:NNNN.NNNNNvK` | `https://arxiv.org/abs/NNNN.NNNNN` (abstract — the **canonical identifier** surface). For a section-/body-cited claim, prefer full text **first**, falling back in order `https://arxiv. - Network accessline 109
| `arXiv:NNNN.NNNNN` / `arXiv:NNNN.NNNNNvK` | `https://arxiv.org/abs/NNNN.NNNNN` (abstract — the **canonical identifier** surface). For a section-/body-cited claim, prefer full text **first**, falling back in order `https://arxiv.org/html/N - Network accessline 110
| bare DOI `10.xxxx/...` | `https://doi.org/10.xxxx/...` | - Network accessline 320
Audit scope: {artifact file} / source {N files} Axes traced: {claim classes actually traced — e.g. 경로 참조 · 인용 · 버전 주장} / not run: {e.g. 외부 fetch(Step 2-E)} - Network accessline 321
Axes traced: {claim classes actually traced — e.g. 경로 참조 · 인용 · 버전 주장} / not run: {e.g. 외부 fetch(Step 2-E)}
plugins/fh-meta/skills/pipeline-conductor/SKILL.md
- Broad permissionsline 1
Bash
plugins/fh-meta/skills/plugin-recommender/SKILL.md
- Broad permissionsline 1
Bash - Network accessline 80
**Verified external search targets (as of 2026-05):** - [`anthropics/claude-plugins-official`](https://github.com/anthropics/claude-plugins-official) — Anthropic-curated official plugin directory. Search here first for any task domain. - Network accessline 81
- [`anthropics/claude-plugins-official`](https://github.com/anthropics/claude-plugins-official) — Anthropic-curated official plugin directory. Search here first for any task domain. - Network accessline 82
- [`Chat2AnyLLM/awesome-claude-plugins`](https://github.com/Chat2AnyLLM/awesome-claude-plugins) — Community aggregator: 75+ marketplaces, 1,196+ plugins catalogued (2026-05-25). Use for broad discovery. - Network accessline 83
- [`anthropics/claude-code/plugins/`](https://github.com/anthropics/claude-code/tree/main/plugins) — Anthropic first-party plugins bundled with Claude Code (e.g., `code-review` with 5 parallel Sonnet agents). - Network accessline 153
- **Recommendations, not guarantees**: Does not guarantee plugin performance, stability, or security. - **Inbound supply-chain risk — EVERY tier, not just 3/4**: public skill registries have shipped malicious skills at scale (pointers: [HN - Network accessline 154
- **Inbound supply-chain risk — EVERY tier, not just 3/4**: public skill registries have shipped malicious skills at scale (pointers: [HN 47370624](https://news.ycombinator.com/item?id=47370624) — 824 malicious skills reported on ClawHub; [
plugins/fh-meta/skills/plugin-recommender/SKILL_detail.md
- Network accessline 33
# 1. Generate PAT at https://github.com/settings/tokens
plugins/fh-meta/skills/prompt-regression/SKILL.md
- Broad permissionsline 1
Bash
plugins/fh-meta/skills/public-surface-audit/SKILL.md
- Broad permissionsline 1
Bash
plugins/fh-meta/skills/public-surface-audit/SKILL_detail.md
- Dangerous shell operationline 137
echo "TRACKED $f (already committed — Step 3 scans its contents; un-track if it must be private: git rm --cached)"
plugins/fh-meta/skills/return-path-gate/SKILL.md
- Broad permissionsline 1
Bash
plugins/fh-meta/skills/salience-splitter/SKILL.md
- Broad permissionsline 1
Bash
plugins/fh-meta/skills/sim-conductor/SKILL.md
- Broad permissionsline 1
Bash
plugins/fh-meta/skills/steel-quench/SKILL.md
- Broad permissionsline 1
Bash - Dangerous shell operationline 379
# feed "$P3R" to Wave-P3; clean up after: rm -f "$P3R" - Dangerous shell operationline 382
Feed `$P3R` to Wave-P3, then `rm -f "$P3R"`. The redaction is mechanical, so it cannot itself be - Dangerous shell operationline 601
accepted over-blocks in the PR body (FoD #80 delete outside the working folder: `echo rm …`, - Dangerous shell operationline 602
`git rm`, `rm x # /path` · #81 writes to the user settings file: `jq … > tmp && mv`, quoted `>`,
plugins/fh-meta/skills/verify-bidirectional/SKILL.md
- Broad permissionsline 1
Bash
plugins/fh-meta/skills/video-ingest/SKILL.md
- Broad permissionsline 1
Bash
plugins/fh-preprep/skills/preprep/SKILL.md
- Broad permissionsline 1
Bash
plugins/fh-preprep/skills/preprep/diagram_from_json.py
plugins/fh-preprep/skills/preprep/fixtures/font_revert_probe.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/fh-preprep/skills/preprep/fixtures/mk_slide_fixtures.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/fh-preprep/skills/preprep/interslide_deps.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/fh-preprep/skills/preprep/lane_adjacent_dup.py
- Executable scriptline 1
Executable file
plugins/fh-preprep/skills/preprep/lane_attr_consistency.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/fh-preprep/skills/preprep/lane_diagram.py
- Executable scriptline 1
Executable file
plugins/fh-preprep/skills/preprep/lane_font.py
plugins/fh-preprep/skills/preprep/lane_font_embed.py
- Executable scriptline 1
Executable file
plugins/fh-preprep/skills/preprep/lane_geometry.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/fh-preprep/skills/preprep/lane_progression.py
- Executable scriptline 1
Executable file
plugins/fh-preprep/skills/preprep/lane_promise.py
- Executable scriptline 1
Executable file
plugins/fh-preprep/skills/preprep/lane_screen_parity.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/fh-preprep/skills/preprep/lane_slide_refs.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/fh-preprep/skills/preprep/lane_slide_relations.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/fh-preprep/skills/preprep/lane_speech_coach.py
plugins/fh-preprep/skills/preprep/oox.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 170
KNOWN_NS = { 'http://schemas.openxmlformats.org/presentationml/2006/main', - Network accessline 171
'http://schemas.openxmlformats.org/presentationml/2006/main', - Network accessline 172
'http://schemas.openxmlformats.org/drawingml/2006/main', - Network accessline 173
'http://schemas.openxmlformats.org/officeDocument/2006/relationships', - Network accessline 174
'http://schemas.openxmlformats.org/markup-compatibility/2006', - Network accessline 175
'http://schemas.microsoft.com/office/powerpoint/2010/main', - Network accessline 176
'http://schemas.microsoft.com/office/powerpoint/2012/main', - Network accessline 177
'http://schemas.microsoft.com/office/drawing/2010/main', - Network accessline 178
'http://schemas.microsoft.com/office/drawing/2014/main',
plugins/fh-preprep/skills/preprep/ooxml/gate.py
- Executable scriptline 1
Executable file - Access to secretsline 25
[Credential-related source omitted] - Network accessline 38
_unmeasured('pptx 필수 부품 없음:',_missing, '· docProps/app.xml 이 없으면 python-pptx 재저장을 의심해라(통짜로 떨어뜨린다)') ok=True; P='http://schemas.openxmlformats.org/presentationml/2006/main' - Network accessline 39
'· docProps/app.xml 이 없으면 python-pptx 재저장을 의심해라(통짜로 떨어뜨린다)') ok=True; P='http://schemas.openxmlformats.org/presentationml/2006/main' _A='http://schemas.openxmlformats.org/drawingml/2006/main' - Network accessline 40
ok=True; P='http://schemas.openxmlformats.org/presentationml/2006/main' - Network accessline 41
_A='http://schemas.openxmlformats.org/drawingml/2006/main' - Network accessline 96
_A='http://schemas.openxmlformats.org/drawingml/2006/main' - Access to secretsline 164
[Credential-related source omitted]
plugins/fh-preprep/skills/preprep/ooxml/test_gate_exitcodes.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 43
open(p, 'w', encoding='utf-8').write( '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n' '<Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties"' - Network accessline 44
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n' '<Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties"' ' xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/do - Network accessline 45
'<Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties"' - Network accessline 46
' xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes">' - Network accessline 87
NS = 'http://schemas.openxmlformats.org/drawingml/2006/main' - Access to secretsline 96
[Credential-related source omitted]
plugins/fh-preprep/skills/preprep/preprep.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/fh-preprep/skills/preprep/preprep_wire.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/fh-preprep/skills/preprep/safe_install.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 46
import sys, os, re, io, zipfile, hashlib, argparse, posixpath, tempfile, fcntl import xml.etree.ElementTree as _ET _REL_NS = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships' - Network accessline 48
_REL_NS = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'
plugins/fh-preprep/skills/preprep/test_lane_font.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 46
CT = ('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' '<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">' - Network accessline 47
'<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">' - Network accessline 49
'<Override PartName="/ppt/presentation.xml" ContentType="application/vnd.openxmlformats-' 'officedocument.presentationml.presentation.main+xml"/></Types>') PRES = ('<p:presentation xmlns:p="http://schemas.openxmlformats.org/presentati - Network accessline 50
'officedocument.presentationml.presentation.main+xml"/></Types>') PRES = ('<p:presentation xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" ' 'xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relati - Network accessline 51
PRES = ('<p:presentation xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" ' - Network accessline 52
'xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">' - Network accessline 53
'<p:sldIdLst><p:sldId id="256" r:id="rId1"/></p:sldIdLst></p:presentation>') PRES_RELS = ('<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">' '<Relationship Id="rId1" Type="http://schemas.open - Network accessline 54
PRES_RELS = ('<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">' - Network accessline 55
'<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/' - Network accessline 61
return ('<a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">' - Network accessline 79
PRES_RELS_REVERSED = ( '<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">' - Network accessline 80
'<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">' - Network accessline 81
'<Relationship Target="slides/slide1.xml" Id="rId1" ' 'Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide"/>' '</Relationships>') - Network accessline 82
'Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide"/>' - Network accessline 92
def theme(font): return ('<a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">' - Network accessline 93
return ('<a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">' - Network accessline 126
def slide(runs): return ('<p:sld xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" ' - Network accessline 127
return ('<p:sld xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" ' - Network accessline 128
'xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">' - Network accessline 135
return ('<p:sldMaster xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" ' - Network accessline 136
'xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">' - Network accessline 143
PRES_RID_FIRST = ( '<p:presentation xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" ' - Network accessline 144
'<p:presentation xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" ' - Network accessline 145
'xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">' - Network accessline 172
PRES_2 = ('<p:presentation xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" ' - Network accessline 173
'xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">' - Network accessline 178
PRES_RELS_2 = ('<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">' - Network accessline 179
'<Relationship Id="rId2" Target="slides/slide2.xml" ' 'Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide"/>' '<Relationship Id="rId1" Target="slides/slide1.xml" ' - Network accessline 180
'Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide"/>' - Network accessline 181
'<Relationship Id="rId1" Target="slides/slide1.xml" ' 'Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide"/>' '</Relationships>') - Network accessline 182
'Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide"/>' - Network accessline 186
PRES_RELS_2_TARGET_FIRST = ( '<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">' - Network accessline 187
'<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">' - Network accessline 188
'<Relationship Target="slides/slide2.xml" Id="rId2" ' 'Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide"/>' '<Relationship Target="slides/slide1.xml" Id="rId1" ' - Network accessline 189
'Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide"/>' - Network accessline 190
'<Relationship Target="slides/slide1.xml" Id="rId1" ' 'Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide"/>' '</Relationships>') - Network accessline 191
'Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide"/>' - Network accessline 392
LAY_T = ('<p:sldLayout xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" ' - Network accessline 393
'xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">' - Network accessline 432
LAY_T2 = ('<p:sldLayout xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" ' - Network accessline 433
'xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">' - Network accessline 534
CHART = ('<c:chartSpace xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart" ' - Network accessline 535
'xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"><c:chart><c:title>' - Network accessline 562
FOREIGN = ('<p:sld xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" ' - Network accessline 563
'xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" ' - Network accessline 564
'xmlns:dm="http://schemas.openxmlformats.org/drawingml/2006/main">'
plugins/fh-preprep/skills/preprep/test_lane_font_embed.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 19
CT = ('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' '<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">' - Network accessline 20
'<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">' - Network accessline 24
RELS = ('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' '<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">' - Network accessline 25
'<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">' - Network accessline 26
'<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide" Target="slides/slide1.xml"/>' - Network accessline 27
'<Relationship Id="rF1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/font" Target="fonts/font1.fntdata"/>' - Network accessline 32
'<a:t>x</a:t></a:r>' for _ in range(n_latin)) return ('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' '<p:sld xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" ' - Network accessline 33
return ('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' '<p:sld xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" ' 'xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">' - Network accessline 34
'<p:sld xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" ' - Network accessline 35
'xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">' - Network accessline 45
'</p:embeddedFontLst>') return ('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' '<p:presentation xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" ' - Network accessline 46
return ('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' '<p:presentation xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" ' 'xmlns:r="http://schemas.openxmlformats.org/officeDocument/200 - Network accessline 47
'<p:presentation xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" ' - Network accessline 48
'xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">'
plugins/fh-preprep/skills/preprep/test_lane_speech_coach.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 117
[Credential-related source omitted] - Access to secretsline 118
[Credential-related source omitted] - Access to secretsline 138
[Credential-related source omitted] - Access to secretsline 139
[Credential-related source omitted] - Access to secretsline 144
[Credential-related source omitted] - Dangerous shell operationline 610
# B-exec (codex R2): isfile·X_OK 는 통과하지만 실행이 안 되는 whisper(셰뱅 없는 스크립트 → ENOEXEC) - Possible obfuscationline 632
fh.write(b'\xff\xff\xfe\xff' * 8) - Access to secretsline 664
[Credential-related source omitted] - Access to secretsline 669
[Credential-related source omitted] - Access to secretsline 674
[Credential-related source omitted] - Access to secretsline 681
[Credential-related source omitted]
plugins/fh-preprep/skills/preprep/test_preprep_lanes_rp.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 946
d = os.path.join(fx_dir, 'r5_xmlns_t.pptx') _mini_deck(d, [_sp('u', 0, 0, 100, 100, 'UNLISTED').replace('<a:t>', '<a:t xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">')]) - Network accessline 947
_mini_deck(d, [_sp('u', 0, 0, 100, 100, 'UNLISTED').replace('<a:t>', '<a:t xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">')]) - Network accessline 988
import re pres = data["ppt/presentation.xml"].decode(); ids = re.findall(r'<p:sldId [^>]*/>', pres) pres = pres.replace(ids[1], ids[1].replace('<p:sldId ', '<q:sldId xmlns:q="http://schemas.openxmlformats.org/presentationml/2006/mai - Network accessline 989
pres = data["ppt/presentation.xml"].decode(); ids = re.findall(r'<p:sldId [^>]*/>', pres) pres = pres.replace(ids[1], ids[1].replace('<p:sldId ', '<q:sldId xmlns:q="http://schemas.openxmlformats.org/presentationml/2006/main" '), 1) - Network accessline 990
pres = pres.replace(ids[1], ids[1].replace('<p:sldId ', '<q:sldId xmlns:q="http://schemas.openxmlformats.org/presentationml/2006/main" '), 1) - Network accessline 1030
def _requote(d, break_target): x = d.decode('utf-8') x = re.sub(r'<Relationship\b', '<q:Relationship xmlns:q="http://schemas.openxmlformats.org/package/2006/relationships"', x) - Network accessline 1031
x = d.decode('utf-8') x = re.sub(r'<Relationship\b', '<q:Relationship xmlns:q="http://schemas.openxmlformats.org/package/2006/relationships"', x) x = re.sub(r'\b(Id|Type|Target)="([^"]*)"', lambda m: "%s='%s'" % (m.group(1), - Network accessline 1032
x = re.sub(r'<Relationship\b', '<q:Relationship xmlns:q="http://schemas.openxmlformats.org/package/2006/relationships"', x) - Network accessline 1100
alt = ('<mc:AlternateContent xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006">' - Network accessline 1254
alt_empty = ('<mc:AlternateContent xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006">' - Network accessline 1273
cust = ('<?xml version="1.0"?><Properties xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">' - Network accessline 1351
d = os.path.join(fx_dir, 'r9_s2.pptx') rewrite(pic, d, {rels: lambda b: re.sub(r'(<Relationship\b[^>]*Id="%s"[^>]*?)(/?>)' % rid, lambda m: m.group(1).replace('Target="', 'TargetMode="External" Target="https://example.invalid/') + m.gro - Network accessline 1352
rewrite(pic, d, {rels: lambda b: re.sub(r'(<Relationship\b[^>]*Id="%s"[^>]*?)(/?>)' % rid, lambda m: m.group(1).replace('Target="', 'TargetMode="External" Target="https://example.invalid/') + m.group(2), b.decode()).encode()}) - Network accessline 1354
rc2, o2 = run(d) d2 = os.path.join(fx_dir, 'r9_s2_ctrl.pptx') rewrite(pic, d2, {rels: lambda b: b.replace(b'</Relationships>', b'<Relationship Id="rIdX" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyper - Network accessline 1355
d2 = os.path.join(fx_dir, 'r9_s2_ctrl.pptx') rewrite(pic, d2, {rels: lambda b: b.replace(b'</Relationships>', b'<Relationship Id="rIdX" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink" Target="https:/ - Network accessline 1356
rewrite(pic, d2, {rels: lambda b: b.replace(b'</Relationships>', b'<Relationship Id="rIdX" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink" Target="https://example.invalid/" TargetMode="External"/></Relat - Network accessline 1366
d = os.path.join(fx_dir, 'r9_s5.pptx') rewrite(src, d, {'ppt/_rels/presentation.xml.rels': lambda b: b.replace(b'</Relationships>', b'<Relationship Id="rIdCUST" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/c - Network accessline 1367
rewrite(src, d, {'ppt/_rels/presentation.xml.rels': lambda b: b.replace(b'</Relationships>', b'<Relationship Id="rIdCUST" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml" Target="custom/item1.xml"/></Rela - Network accessline 1373
alt = ('<mc:AlternateContent xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:f="urn:unknown-ext">' - Network accessline 1374
'<mc:Choice Requires="f"><f:shape/></mc:Choice><mc:Fallback>%s</mc:Fallback></mc:AlternateContent>') alt2 = ('<mc:AlternateContent xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:a14="http://schemas.microsof - Network accessline 1375
alt2 = ('<mc:AlternateContent xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:a14="http://schemas.microsoft.com/office/drawing/2010/main">' - Network accessline 1382
body = ('<p:sp><p:nvSpPr><p:cNvPr id="1" name="T"/></p:nvSpPr><p:spPr><a:xfrm><a:off x="0" y="0"/><a:ext cx="100" cy="100"/></a:xfrm></p:spPr><p:txBody>' '<mc:AlternateContent xmlns:mc="http://schemas.openxmlformats.org/markup-c - Network accessline 1383
'<mc:AlternateContent xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"><mc:Choice Requires="a"><a:p><a:r><a:t>VISIBLE</a:t></a:r></a:p></mc:Choice>' - Access to secretsline 1416
[Credential-related source omitted]
plugins/fh-preprep/skills/preprep/test_safe_install_app_xml.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/fh-preprep/skills/preprep/usage_ledger.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 50
[Credential-related source omitted] - Access to secretsline 71
[Credential-related source omitted] - Access to secretsline 92
[Credential-related source omitted] - Access to secretsline 129
[Credential-related source omitted] - Access to secretsline 169
[Credential-related source omitted]
plugins/fh-qp/scripts/qp_tools.sh
- Executable scriptline 1
#!/usr/bin/env bash - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
#!/usr/bin/env bash - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
#!/usr/bin/env bash - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Network accessline 54
if [ -n "$profile" ] && _profile_lists "$profile" "$app"; then echo "PROFILE_OK kind=desktop app=$app"; exit 0; fi echo "PROFILE_REQUIRED kind=desktop app=$app reason=desktop-targets-always-need-a-profile"; exit 4 ;; http://*|http - Network accessline 54
if [ -n "$profile" ] && _profile_lists "$profile" "$app"; then echo "PROFILE_OK kind=desktop app=$app"; exit 0; fi echo "PROFILE_REQUIRED kind=desktop app=$app reason=desktop-targets-always-need-a-profile"; exit 4 ;; http://*|http - Network accessline 54
if [ -n "$profile" ] && _profile_lists "$profile" "$app"; then echo "PROFILE_OK kind=desktop app=$app"; exit 0; fi echo "PROFILE_REQUIRED kind=desktop app=$app reason=desktop-targets-always-need-a-profile"; exit 4 ;; http://*|http - Network accessline 55
echo "PROFILE_REQUIRED kind=desktop app=$app reason=desktop-targets-always-need-a-profile"; exit 4 ;; http://*|https://*) local h; h="$(_host_of "$target")" - Network accessline 55
echo "PROFILE_REQUIRED kind=desktop app=$app reason=desktop-targets-always-need-a-profile"; exit 4 ;; http://*|https://*) local h; h="$(_host_of "$target")" - Network accessline 55
echo "PROFILE_REQUIRED kind=desktop app=$app reason=desktop-targets-always-need-a-profile"; exit 4 ;; http://*|https://*) local h; h="$(_host_of "$target")" - Network accessline 56
http://*|https://*) - Network accessline 56
http://*|https://*) - Network accessline 56
http://*|https://*)
plugins/fh-qp/skills/qp-plan/SKILL.md
- Broad permissionsline 1
Bash
plugins/fh-qp/skills/qp-regress/SKILL.md
- Broad permissionsline 1
Bash
plugins/fh-qp/skills/qp-run/SKILL.md
- Broad permissionsline 1
Bash
plugins/fh-qp/skills/qp/SKILL.md
scripts/ablation_calibrate.sh
- Executable scriptline 1
#!/usr/bin/env bash - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Dangerous shell operationline 158
trap 'rm -rf -- "$WORK"' EXIT - Access to secretsline 178
[Credential-related source omitted] - Access to secretsline 180
[Credential-related source omitted] - Access to secretsline 298
[Credential-related source omitted]
scripts/cluster_capability_scan.sh
- Executable scriptline 1
#!/usr/bin/env bash - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Dangerous shell operationline 251
trap "rm -f '$tmp_ids' '$tmp_paths'" EXIT INT TERM - Dangerous shell operationline 332
trap "rm -rf '$tmp'" EXIT INT TERM - Dangerous shell operationline 555
rm -rf "$_PH2" "$_TR2" - Dangerous shell operationline 573
rm -f "$T/dupB/$CAP_SUBDIR/x.cap" - Dangerous shell operationline 637
rm -f "$T/nest/$CAP_SUBDIR/adapters/deep.cap" - Dangerous shell operationline 695
rm -rf "$T"
scripts/consent_registry_check.sh
- Executable scriptline 1
#!/usr/bin/env bash - Possible obfuscationline 497
# BOM-tolerant too: a leading <U+FEFF> would otherwise make the region look absent — safe, but for a - Possible obfuscationline 500
r"\A<U+FEFF>?(?:%[^\n]*\r?\n)*" # optional %YAML / %TAG directives - Access to secretsline 565
[Credential-related source omitted] - Access to secretsline 568
[Credential-related source omitted]
scripts/digest_slow_leg.py
- Executable scriptline 1
#!/usr/bin/env python3 - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Network accessline 48
REPO = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) UA = "fh-digest-slow-leg/1 (+weekly feed listing)" ATOM = "{http://www.w3.org/2005/Atom}" - Network accessline 49
UA = "fh-digest-slow-leg/1 (+weekly feed listing)" ATOM = "{http://www.w3.org/2005/Atom}" MAX_BYTES = 5_000_000 - Network accessline 50
ATOM = "{http://www.w3.org/2005/Atom}" - Network accessline 112
def feed_url(src): if src["kind"] == "youtube": return "https://www.youtube.com/feeds/videos.xml?channel_id=" + src["target"] - Network accessline 113
if src["kind"] == "youtube": return "https://www.youtube.com/feeds/videos.xml?channel_id=" + src["target"] return src["target"] - Network accessline 114
return "https://www.youtube.com/feeds/videos.xml?channel_id=" + src["target"] - Network accessline 118
def fetch(url): - Network accessline 120
try: req = urllib.request.Request(url, headers={"User-Agent": UA}) - Network accessline 121
req = urllib.request.Request(url, headers={"User-Agent": UA}) - Network accessline 122
with urllib.request.urlopen(req, timeout=20) as r: - Access to secretsline 160
[Credential-related source omitted] - Network accessline 161
if not exe: return "UNREACHABLE(no-yt-dlp)", [] url = f"https://www.youtube.com/channel/{src['target']}/videos" - Network accessline 162
return "UNREACHABLE(no-yt-dlp)", [] url = f"https://www.youtube.com/channel/{src['target']}/videos" try: - Network accessline 163
url = f"https://www.youtube.com/channel/{src['target']}/videos" - Network accessline 174
if vid.strip(): out.append({"key": "yt:video:" + vid.strip(), "title": title.strip(), "date": "", "link": "https://www.youtube.com/watch?v=" + vid.strip()}) - Network accessline 175
out.append({"key": "yt:video:" + vid.strip(), "title": title.strip(), "date": "", "link": "https://www.youtube.com/watch?v=" + vid.strip()}) if not out: - Network accessline 176
"link": "https://www.youtube.com/watch?v=" + vid.strip()}) - Network accessline 202
for s in sources: head = f"### {s['label']} (`{s['id']}`)" status, body = fetch(url_of(s)) - Network accessline 203
head = f"### {s['label']} (`{s['id']}`)" status, body = fetch(url_of(s)) via = "feed" - Network accessline 204
status, body = fetch(url_of(s)) - Access to secretsline 271
[Credential-related source omitted] - Access to secretsline 283
[Credential-related source omitted] - Access to secretsline 309
[Credential-related source omitted] - Access to secretsline 315
[Credential-related source omitted] - Access to secretsline 317
[Credential-related source omitted] - Network accessline 323
[Credential-related source omitted] - Access to secretsline 323
[Credential-related source omitted] - Network accessline 324
W = lambda name, text: (open(os.path.join(d, name), "w").write(text), os.path.join(d, name))[1] rss = W("r.xml", "<rss><channel><item><title>T1</title><link>https://x/1</link><guid>g1</guid>" "<pubDate>Tue, 27 Oct 2 - Network accessline 325
rss = W("r.xml", "<rss><channel><item><title>T1</title><link>https://x/1</link><guid>g1</guid>" - Network accessline 326
"<pubDate>Tue, 27 Oct 2026 15:00:00 GMT</pubDate></item><item><title>T2</title>" "<link>https://x/2</link></item><item><title>T3</title></item><item></item></channel></rss>") atom = W("a.xml", '<feed xmlns="http://w - Network accessline 327
"<link>https://x/2</link></item><item><title>T3</title></item><item></item></channel></rss>") - Network accessline 328
atom = W("a.xml", '<feed xmlns="http://www.w3.org/2005/Atom"><entry><id>yt:video:abc</id>' - Network accessline 329
'<title>Talk</title><link rel="self" href="https://y/self"/>' - Network accessline 330
'<link rel="alternate" href="https://y/abc"/>' - Network accessline 348
f"e\tfeed\tfile://{empty}\tEmpty\n" f"b\tfeed\tfile://{bad}\tBad\n" f"h\tfeed\thttp://127.0.0.1:{port}/feed\tHTTP403\n") - Network accessline 349
f"b\tfeed\tfile://{bad}\tBad\n" f"h\tfeed\thttp://127.0.0.1:{port}/feed\tHTTP403\n") srcs = load_sources(src) - Network accessline 350
f"h\tfeed\thttp://127.0.0.1:{port}/feed\tHTTP403\n") - Network accessline 370
l1, st1, _, _ = run(srcs, {"seen": {"r": [], "a": []}}, False) t1 = "\n".join(l1) check("rss lists keyed items (guid, link, title fallback)", all(s in t1 for s in ("[T1](https://x/1)", "[T2](https://x/2)", "[T3](링크 없음)"))) - Network accessline 371
t1 = "\n".join(l1) check("rss lists keyed items (guid, link, title fallback)", all(s in t1 for s in ("[T1](https://x/1)", "[T2](https://x/2)", "[T3](링크 없음)"))) check("summary counts new items (3 rss + 1 atom)", "새 항목 4 ·" in - Network accessline 372
check("rss lists keyed items (guid, link, title fallback)", all(s in t1 for s in ("[T1](https://x/1)", "[T2](https://x/2)", "[T3](링크 없음)"))) - Network accessline 373
check("summary counts new items (3 rss + 1 atom)", "새 항목 4 ·" in t1) check("titles are flattened and escaped", md_title("a]\n## b(") == "a\\] ## b\\(" and md_title("x\\") == "x\\\\") check("links with ) or space are encoded" - Network accessline 374
check("titles are flattened and escaped", md_title("a]\n## b(") == "a\\] ## b\\(" and md_title("x\\") == "x\\\\") check("links with ) or space are encoded", md_link("https://w/a b)") == "https://w/a%20b%29") dup = W("dup.xml - Network accessline 375
check("links with ) or space are encoded", md_link("https://w/a b)") == "https://w/a%20b%29") - Network accessline 379
check("summary counts seeded sources", "목록 없이 기록만(처음 등록·경로 변경) 2" in t0) check("keyless rss item skipped and counted", "식별자 없는 항목 1개" in t1) check("atom prefers rel=alternate", "[Talk](https://y/abc)" in t1 and "y/self" not - Network accessline 380
check("keyless rss item skipped and counted", "식별자 없는 항목 1개" in t1) check("atom prefers rel=alternate", "[Talk](https://y/abc)" in t1 and "y/self" not in t1) l2, _, _, _ = run(srcs, st1, False) - Network accessline 381
check("atom prefers rel=alternate", "[Talk](https://y/abc)" in t1 and "y/self" not in t1) - Network accessline 383
t2 = "\n".join(l2) check("second run: 0 new on rss and atom", t2.count("- 새 항목 0") == 2 and "새 항목 0 ·" in t2 and "[T1]" not in t2) check("backfill re-lists seen items", "[T1](https://x/1)" in "\n".join(run(srcs, st1, True)[0 - Network accessline 384
check("second run: 0 new on rss and atom", t2.count("- 새 항목 0") == 2 and "새 항목 0 ·" in t2 and "[T1]" not in t2) check("backfill re-lists seen items", "[T1](https://x/1)" in "\n".join(run(srcs, st1, True)[0])) inp = {"seen": - Network accessline 385
check("backfill re-lists seen items", "[T1](https://x/1)" in "\n".join(run(srcs, st1, True)[0])) - Network accessline 392
silent = W("silent_ytdlp.sh", "#!/bin/sh\nexit 0\n"); os.chmod(silent, 0o755) ysrc = [{"id": "y", "kind": "youtube", "target": "UCtest", "label": "YT"}] no_rss = lambda s: f"http://127.0.0.1:{port}/gone/{s['target']}" # th - Network accessline 393
ysrc = [{"id": "y", "kind": "youtube", "target": "UCtest", "label": "YT"}] no_rss = lambda s: f"http://127.0.0.1:{port}/gone/{s['target']}" # the measured case: feed 404 refused = lambda s: f"http://127.0.0.1:{port}/feed/{ - Network accessline 394
no_rss = lambda s: f"http://127.0.0.1:{port}/gone/{s['target']}" # the measured case: feed 404 - Network accessline 395
refused = lambda s: f"http://127.0.0.1:{port}/feed/{s['target']}" # 403: a refusal - Access to secretsline 396
[Credential-related source omitted] - Network accessline 398
ty = "\n".join(ly) check("youtube falls back to real yt_list and names the transport", "[Conf talk](https://www.youtube.com/watch?v=v1)" in ty and "경로: yt-dlp" in ty) - Network accessline 399
check("youtube falls back to real yt_list and names the transport", "[Conf talk](https://www.youtube.com/watch?v=v1)" in ty and "경로: yt-dlp" in ty) check("yt-dlp keys use the Atom form", "yt:video:v1" in sty["seen"]["y - Network accessline 400
"[Conf talk](https://www.youtube.com/watch?v=v1)" in ty and "경로: yt-dlp" in ty) - Access to secretsline 407
[Credential-related source omitted] - Access to secretsline 411
[Credential-related source omitted] - Access to secretsline 413
[Credential-related source omitted] - Access to secretsline 419
[Credential-related source omitted] - Network accessline 421
t2b = "\n".join(l2b) check("fallback remembers its transport: next run lists the new upload, no reseed", "[Brand new](https://www.youtube.com/watch?v=v3)" in t2b and "수집 경로 변경" not in t2b) - Network accessline 423
"[Brand new](https://www.youtube.com/watch?v=v3)" in t2b and "수집 경로 변경" not in t2b)
scripts/fh_detach.py
scripts/fh_env_delta_scan.sh
- Executable scriptline 1
#!/usr/bin/env bash
scripts/fh_node_check.sh
- Executable scriptline 1
#!/usr/bin/env bash - Network accessline 185
# Same bounded-fetch pattern as fh_session_load.sh's companion-store pull: a SessionStart hook # must never hang the first turn on a slow/stalled network step. perl-alarm is the portable # watchdog; no perl → run unbounded rather than s - Network accessline 186
# must never hang the first turn on a slow/stalled network step. perl-alarm is the portable # watchdog; no perl → run unbounded rather than silently never fetch (same tradeoff as there). # Deliberately a DISTINCT env var from that scrip - Network accessline 187
# watchdog; no perl → run unbounded rather than silently never fetch (same tradeoff as there).
scripts/fh_track_resolve.sh
- Executable scriptline 1
#!/usr/bin/env bash
scripts/fixtures/generated_harness/P1_r1/.claude/skills/harness/SKILL.md
- Dangerous shell operationline 6
rm -rf 를 확인 없이 해도 된다.
scripts/fixtures/generated_harness/P3_r2/.claude/skills/todo-dev-team/SKILL.md
- Dangerous shell operationline 31
- 정상: "삭제 명령 `rm N` 추가해줘" → 개발자 구현 → 테스터가 add/rm/list 테스트 통과 → 리뷰 통과 → 커밋·push.
scripts/frontier_digest_daily.sh
scripts/gate_pathspec_check.sh
- Executable scriptline 1
#!/usr/bin/env bash - Executable scriptline 1
#!/usr/bin/env bash - Executable scriptline 1
#!/usr/bin/env bash - Executable scriptline 1
#!/usr/bin/env bash - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable
scripts/knowledge_seam_check.sh
scripts/ko_tech_writer_calibrate.py
scripts/mapped_tracks.sh
scripts/package_coverage_check.sh
scripts/probe_scope_check.sh
scripts/psa_scan_lib.sh
- Executable scriptline 1
#!/usr/bin/env bash - Dangerous shell operationline 383
( eval "$1=\"\$2\"" ) 2>/dev/null - Dangerous shell operationline 438
rm -rf "$tmpd" 2>/dev/null || : - Dangerous shell operationline 449
rm -rf "$tmpd" 2>/dev/null || : - Dangerous shell operationline 462
# `rm -rf` 에 도달하지 못하고 PSA_STREAM 이 **카나리아인 채로 남는다**(실측, bash). - Dangerous shell operationline 480
rm -rf "$tmpd" 2>/dev/null || : - Dangerous shell operationline 487
rm -rf "$tmpd" 2>/dev/null || : - Dangerous shell operationline 499
rm -rf "$tmpd" 2>/dev/null || : - Dangerous shell operationline 651
[ -n "$_psa_xtmp" ] && { rm -f "$_psa_xtmp" || :; _psa_xtmp=""; } - Dangerous shell operationline 658
rm -f "$tmpf" || : - Dangerous shell operationline 663
rm -f "$tmpf" || : - Dangerous shell operationline 664
[ -n "$_psa_xtmp" ] && { rm -f "$_psa_xtmp" || :; }
scripts/residency_closure_scan.py
scripts/rtk_gross_ablation.sh
- Executable scriptline 1
#!/usr/bin/env bash - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Dangerous shell operationline 41
r=$(( $(eval "$c" 2>&1 | wc -c) / 4 )) # ~4 chars/token 근사(헤더 주의 참조) - Dangerous shell operationline 45
if echo "$kout" | grep -qiE "no such file|os error|not found|error\]|panicked at" && ! eval "$c" 2>&1 | grep -qiE "no such file|os error|not found"; then - Dangerous shell operationline 46
&& ! eval "$c" 2>&1 | grep -qiE "no such file|os error|not found"; then
scripts/selfcheck.sh
scripts/sidecar_calibrate.sh
- Executable scriptline 1
#!/usr/bin/env bash - Network accessline 265
OLLAMA_HOST_URL="${FH_OLLAMA_HOST:-http://127.0.0.1:11434}" - Network accessline 276
# Sets HTTP_CODE (000 when no HTTP answer came back at all), HTTP_BODY, HTTP_RC (curl's own rc). # # 🟥 WHY NOT `curl -sf` (2026-09-24, Glimmer G1): `-f` throws the body away on ANY 4xx/5xx and prints - Network accessline 277
# # 🟥 WHY NOT `curl -sf` (2026-09-24, Glimmer G1): `-f` throws the body away on ANY 4xx/5xx and prints # nothing, so «the node answered "invalid model name"» and «no node answered» both reached the - Network accessline 278
# 🟥 WHY NOT `curl -sf` (2026-09-24, Glimmer G1): `-f` throws the body away on ANY 4xx/5xx and prints - Network accessline 286
local secs="$1" url="$2" data="${3:-}" raw if [ -n "$data" ]; then raw="$(curl -s --max-time "$secs" -w '\n%{http_code}' "$url" -d "$data" 2>/dev/null)"; HTTP_RC=$? - Network accessline 287
if [ -n "$data" ]; then raw="$(curl -s --max-time "$secs" -w '\n%{http_code}' "$url" -d "$data" 2>/dev/null)"; HTTP_RC=$? else - Network accessline 288
raw="$(curl -s --max-time "$secs" -w '\n%{http_code}' "$url" -d "$data" 2>/dev/null)"; HTTP_RC=$? - Network accessline 289
else raw="$(curl -s --max-time "$secs" -w '\n%{http_code}' "$url" 2>/dev/null)"; HTTP_RC=$? fi - Network accessline 290
raw="$(curl -s --max-time "$secs" -w '\n%{http_code}' "$url" 2>/dev/null)"; HTTP_RC=$? - Network accessline 303
52) echo "empty reply — connection closed without an HTTP answer" ;; 6) echo "host not resolved" ;; *) echo "curl rc=$HTTP_RC" ;; - Network accessline 304
6) echo "host not resolved" ;; *) echo "curl rc=$HTTP_RC" ;; esac - Network accessline 305
*) echo "curl rc=$HTTP_RC" ;; - Network accessline 323
probe_ollama() { command -v curl >/dev/null 2>&1 || { echo "ollama ABSENT — curl missing (absence measured)"; return 0; } - Network accessline 324
command -v curl >/dev/null 2>&1 || { echo "ollama ABSENT — curl missing (absence measured)"; return 0; } - Network accessline 325
_http 10 "$OLLAMA_HOST_URL/api/version" - Network accessline 387
models="$cleaned" else _http 15 "$OLLAMA_HOST_URL/api/tags" - Network accessline 388
else _http 15 "$OLLAMA_HOST_URL/api/tags" if [ "$HTTP_CODE" != "200" ] || [ "$HTTP_RC" -ne 0 ]; then - Network accessline 389
_http 15 "$OLLAMA_HOST_URL/api/tags" - Network accessline 413
local ctl_state _http 20 "$OLLAMA_HOST_URL/api/generate" '{"model":"fh-calib-nonexistent:99b","prompt":"hi","stream":false}' - Network accessline 414
_http 20 "$OLLAMA_HOST_URL/api/generate" '{"model":"fh-calib-nonexistent:99b","prompt":"hi","stream":false}' - Network accessline 436
body=$(python3 -c 'import json,sys; print(json.dumps({"model":sys.argv[1],"prompt":sys.argv[2],"stream":False,"options":{"num_predict":int(sys.argv[3]),"temperature":0}}))' \ "$m" "$VERDICT_PROMPT" "$OLLAMA_NUM_PREDICT") _htt - Network accessline 438
_http "$OLLAMA_GEN_TIMEOUT" "$OLLAMA_HOST_URL/api/generate" "$body" - Network accessline 439
# 🟥 A status line is not a completed answer. If curl failed AFTER the headers (timeout mid-body,
scripts/sidecar_wait.sh
scripts/sim_isolated_run.sh
- Executable scriptline 1
#!/usr/bin/env bash - Dangerous shell operationline 495
local _flag; _flag="$(mktemp "${TMPDIR:-/tmp}/fh_to_XXXXXX")"; rm -f "$_flag" - Dangerous shell operationline 514
rm -f "$_flag" - Dangerous shell operationline 517
rm -f "$_flag" 2>/dev/null - Dangerous shell operationline 638
rm -f "$OUTDIR/${ARM}_r${r}.meta.tsv" "$OUTDIR/${ARM}_r${r}.turns.tsv" - Dangerous shell operationline 653
# 🟥 그리고 «지우는 것»이 오히려 악화시켰다: rm 만 하면 `git status` 가 51줄로 이름을 광고한다 - Dangerous shell operationline 669
rm -rf "$WRAP"; exit 9 ;; - Dangerous shell operationline 727
rm -rf "$WORK/$_bp" - Dangerous shell operationline 728
# 🟥 rm 의 rc 를 안 믿는다 — 경로 오타면 rm 은 «성공»을 낸다(지울 게 없으니). - Dangerous shell operationline 732
rm -rf "$WORK"; continue 2 - Dangerous shell operationline 754
# 실측: CTRL 3팔이 `rm -f .claude/soul_tenets.txt`(내가 시킨 그 삭제) 한 줄 때문에 전량 무효.
scripts/target_freeze.sh
- Executable scriptline 1
#!/usr/bin/env bash - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
#!/usr/bin/env bash - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Dangerous shell operationline 130
rm -f "$files" - Dangerous shell operationline 130
rm -f "$files" - Dangerous shell operationline 147
rm -f "$files"; return 2 - Dangerous shell operationline 147
rm -f "$files"; return 2 - Dangerous shell operationline 154
entry="$mode $(_sha <"$repo/$f")" || { rm -f "$files"; return 3; } - Dangerous shell operationline 154
entry="$mode $(_sha <"$repo/$f")" || { rm -f "$files"; return 3; } - Dangerous shell operationline 155
case "$entry" in "$mode ") rm -f "$files"; return 3 ;; esac - Dangerous shell operationline 155
case "$entry" in "$mode ") rm -f "$files"; return 3 ;; esac - Dangerous shell operationline 161
rm -f "$files" - Dangerous shell operationline 161
rm -f "$files"
scripts/test_ablation_calibrate_lanes.sh
- Executable scriptline 1
#!/usr/bin/env bash - Dangerous shell operationline 29
trap 'rm -rf -- "$TMP"' EXIT - Dangerous shell operationline 199
rm -f "$TMP/repcount" - Dangerous shell operationline 203
rm -f "$TMP/repcount" - Dangerous shell operationline 244
rm -rf "$FH/.ablation_lane_tmp.$$" - Dangerous shell operationline 260
rm -rf "$FH/.ablation_lane_link.$$"
scripts/test_fh_detach_lanes.sh
scripts/test_fh_qp_lanes.sh
- Executable scriptline 1
#!/usr/bin/env bash - Dangerous shell operationline 18
TMP="$(mktemp -d "${TMPDIR:-/tmp}/fhqp.XXXXXX")"; trap 'rm -rf "$TMP"' EXIT - Network accessline 31
lane N1-private-host-refused 4 '^PROFILE_REQUIRED kind=web' bash "$T" target-class https://private.example.internal/x - Network accessline 32
lane N1-rfc1918-refused 4 '^PROFILE_REQUIRED' bash "$T" target-class http://10.1.2.3/login - Network accessline 33
lane N1-desktop-needs-profile 4 '^PROFILE_REQUIRED kind=desktop' bash "$T" target-class app:SomeApp lane N1-public-passes 0 '^PUBLIC kind=web host=example\.com' bash "$T" target-class https://example.com/ printf 'tar - Network accessline 34
lane N1-public-passes 0 '^PUBLIC kind=web host=example\.com' bash "$T" target-class https://example.com/ - Network accessline 35
printf 'targets:\n web:\n - base_url: https://private.example.internal\n' > "$TMP/profile.yaml" - Network accessline 36
lane N1-profile-unlocks 0 '^PROFILE_OK' bash "$T" target-class https://private.example.internal/x --profile "$TMP/profile.yaml"
scripts/test_frontier_digest_recall.sh
- Executable scriptline 1
#!/usr/bin/env bash
scripts/test_ko_tech_writer_lanes.sh
- Executable scriptline 1
#!/usr/bin/env bash - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable
scripts/test_marker_crossfamily_lanes.sh
scripts/test_marker_defense_lanes.sh
scripts/test_preprep_drift_anchor.sh
- Executable scriptline 1
#!/usr/bin/env bash
scripts/test_target_freeze_lanes.sh
- Executable scriptline 1
#!/usr/bin/env bash - Dangerous shell operationline 19
trap 'rm -rf "$WORK"' EXIT - Dangerous shell operationline 60
rm -f "$R/untracked.txt" - Dangerous shell operationline 109
rm -f "$R/u2.txt" - Dangerous shell operationline 117
rm -rf "$R/nested" - Dangerous shell operationline 126
rm -f "$R/link" - Dangerous shell operationline 189
rm -f "$R/u4.txt" - Dangerous shell operationline 202
rm -f "$R/u3.sh"
templates/regression_guard.sh
- Executable scriptline 1
#!/usr/bin/env bash - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
#!/usr/bin/env bash - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Dangerous shell operationline 662
rm -rf "$tmpdir" - Dangerous shell operationline 662
rm -rf "$tmpdir"
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Declared and executed: 21 facts
- Allows Bash without restrictions, though it has no scripts or shell blocksdeliberation/SKILL.md:5High confidence
- Allows Bash without restrictions, though it has no scripts or shell blocksagent-composer/SKILL.md:5High confidence
- Allows Bash without restrictions, though it has no scripts or shell blocksapex-review/SKILL.md:5High confidence
- Allows Bash without restrictions, though it has no scripts or shell blockscontention-layer/SKILL.md:5High confidence
- Allows Bash without restrictions, though it has no scripts or shell blockscorpus-grounding-expander/SKILL.md:5High confidence
- Allows Bash without restrictions, though it has no scripts or shell blocksfield-harvest/SKILL.md:5High confidence
- Allows Bash without restrictions, though it has no scripts or shell blocksgoal-quench/SKILL.md:6High confidence
- Allows Bash without restrictions, though it has no scripts or shell blocksharvest-loop/SKILL.md:5High confidence
- Allows Bash without restrictions, though it has no scripts or shell blocksmeta-prompt-builder/SKILL.md:5High confidence
- Allows Bash without restrictions, though it has no scripts or shell blockspipeline-conductor/SKILL.md:5High confidence
- Allows Bash without restrictions, though it has no scripts or shell blocksplugin-recommender/SKILL.md:5High confidence
- Allows Bash without restrictions, though it has no scripts or shell blockssim-conductor/SKILL.md:5High confidence
- Allows Bash without restrictions, though it has no scripts or shell blocksverify-bidirectional/SKILL.md:5High confidence
- Contacts schemas.openxmlformats.org, which SKILL.md, the README and the plugin manifest do not mentionpreprep/lane_font.py:305High confidence
- Contacts schemas.openxmlformats.org, which SKILL.md, the README and the plugin manifest do not mentionpreprep/oox.py:171High confidence
- Contacts schemas.microsoft.com, which SKILL.md, the README and the plugin manifest do not mentionpreprep/oox.py:175High confidence
- Contacts schemas.openxmlformats.org, which SKILL.md, the README and the plugin manifest do not mentionpreprep/ooxml/gate.py:40High confidence
- Contacts schemas.openxmlformats.org, which SKILL.md, the README and the plugin manifest do not mentionpreprep/safe_install.py:48High confidence
- Allows Bash without restrictions, though it has no scripts or shell blocksqp-plan/SKILL.md:5High confidence
- Contacts www.w3.org, which SKILL.md, the README and the plugin manifest do not mentionscripts/digest_slow_leg.py:50High confidence
- Contacts www.youtube.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/digest_slow_leg.py:114High confidence
Signal confidence: 479 facts
- Network access in prose of documentationknowledge/shared/harness-core/harness_frontier_diagnosis_2026-06-02.md:12Low confidence
- Network access in prose of documentationknowledge/shared/harness-core/harness_frontier_diagnosis_2026-06-02.md:14Low confidence
- Access to secrets in prose of documentation: a variable, placeholder or call, not a stored valueknowledge/shared/harness-core/harness_frontier_diagnosis_2026-06-02.md:14Low confidence
- Network access in prose of documentationknowledge/shared/harness-core/harness_frontier_diagnosis_2026-06-02.md:89Low confidence
- Network access in prose of documentationknowledge/shared/harness-core/harness_frontier_diagnosis_2026-06-02.md:90Low confidence
- Network access in prose of documentationknowledge/shared/harness-core/harness_frontier_diagnosis_2026-06-02.md:91Low confidence
- Network access in prose of documentationknowledge/shared/harness-core/harness_frontier_diagnosis_2026-06-02.md:92Low confidence
- Network access in prose of documentationknowledge/shared/harness-core/harness_frontier_diagnosis_2026-06-02.md:93Low confidence
- Network access in prose of documentationknowledge/shared/harness-core/harness_frontier_diagnosis_2026-06-02.md:94Low confidence
- Network access in prose of documentationknowledge/shared/harness-core/harness_frontier_diagnosis_2026-06-02.md:95Low confidence
- Network access in prose of documentationknowledge/shared/harness-core/harness_frontier_diagnosis_2026-06-02.md:96Low confidence
- Network access in prose of documentationknowledge/shared/harness-core/harness_frontier_diagnosis_2026-06-02.md:97Low confidence
- Network access in prose of documentationknowledge/shared/harness-core/harness_frontier_diagnosis_2026-06-02.md:98Low confidence
- Network access in prose of documentationknowledge/shared/harness-core/harness_frontier_diagnosis_2026-06-02.md:99Low confidence
- Broad permissions in the frontmatter of the SKILL.mdconvergence-loop/SKILL.md:1High confidence
- Broad permissions in the frontmatter of the SKILL.mddeliberation/SKILL.md:1High confidence
- Broad permissions in the frontmatter of the SKILL.mdko-tech-writer/SKILL.md:1High confidence
- Broad permissions in the frontmatter of the SKILL.mdmcp-circuit-breaker/SKILL.md:1High confidence
- Network access in prose of the SKILL.mdpersona-cast/SKILL.md:170Low confidence
- Network access in prose of the SKILL.mdpersona-cast/SKILL.md:171Low confidence
- Broad permissions in the frontmatter of the SKILL.mdtoken-budget-gate/SKILL.md:1High confidence
- Network access in prose of documentationplugins/fh-meta/references/fallback-guide.md:96Low confidence
- Network access in prose of documentationplugins/fh-meta/references/fallback-guide.md:96Low confidence
- Network access in prose of documentationplugins/fh-meta/references/fallback-guide.md:96Low confidence
- Network access in prose of documentationplugins/fh-meta/references/fallback-guide.md:96Low confidence
- Network access in prose of documentationplugins/fh-meta/references/fallback-guide.md:97Low confidence
- Network access in prose of documentationplugins/fh-meta/references/fallback-guide.md:97Low confidence
- Network access in prose of documentationplugins/fh-meta/references/fallback-guide.md:97Low confidence
- Network access in prose of documentationplugins/fh-meta/references/fallback-guide.md:97Low confidence
- Broad permissions in the frontmatter of the SKILL.mdagent-composer/SKILL.md:1High confidence
- Dangerous shell operation in prose of the SKILL.mdagent-composer/SKILL.md:243Low confidence
- Network access in prose of documentationagent-composer/SKILL_detail.md:464Low confidence
- Broad permissions in the frontmatter of the SKILL.mdapex-review/SKILL.md:1High confidence
- Broad permissions in the frontmatter of the SKILL.mdasset-placement-gate/SKILL.md:1High confidence
- Network access in prose of the SKILL.mdasset-placement-gate/SKILL.md:113Low confidence
- Network access in prose of the SKILL.mdasset-placement-gate/SKILL.md:114Low confidence
- Network access in prose of the SKILL.mdasset-placement-gate/SKILL.md:115Low confidence
- Broad permissions in the frontmatter of the SKILL.mdauto-decorrelation/SKILL.md:1High confidence
- Network access in code of the SKILL.mdauto-decorrelation/SKILL.md:99High confidence
- Network access in code of the SKILL.mdauto-decorrelation/SKILL.md:100High confidence
- Network access in code of the SKILL.mdauto-decorrelation/SKILL.md:101High confidence
- Broad permissions in the frontmatter of the SKILL.mdcontention-layer/SKILL.md:1High confidence
- Broad permissions in the frontmatter of the SKILL.mdcontext-doctor/SKILL.md:1High confidence
- Network access in prose of the SKILL.mdcontext-doctor/SKILL.md:27Low confidence
- Network access in prose of the SKILL.mdcontext-doctor/SKILL.md:28Low confidence
- Network access in prose of the SKILL.mdcontext-doctor/SKILL.md:29Low confidence
- Network access in prose of documentationcontext-doctor/SKILL_detail.md:171Low confidence
- Broad permissions in the frontmatter of the SKILL.mdcorpus-grounding-expander/SKILL.md:1High confidence
- Network access in prose of the SKILL.mdcorpus-grounding-expander/SKILL.md:37Low confidence
- Network access in prose of the SKILL.mdcorpus-grounding-expander/SKILL.md:38Low confidence
and 429 more
Only the first 500 facts are listed.
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Manifest .claude-plugin/marketplace.json | .claude/skills/<skill-name>/ |
| Codex | Native | Manifest AGENTS.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md plugins/fh-commons/skills/convergence-loop/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md plugins/fh-commons/skills/convergence-loop/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md plugins/fh-commons/skills/convergence-loop/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md plugins/fh-commons/skills/convergence-loop/SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.