一键导入
ijfw-agents-md
Maintain canonical AGENTS.md (open spec). Trigger: 'agents.md', 'update AGENTS.md', or auto-fired by ijfw-team after agent generation.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Maintain canonical AGENTS.md (open spec). Trigger: 'agents.md', 'update AGENTS.md', or auto-fired by ijfw-team after agent generation.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
First-class design intelligence. Dispatches to the best available design skill (ui-ux-pro-max, frontend-design, superpowers), then layers IJFW constraints on top. Triggers: 'design', 'redesign', 'UI', 'UX', 'dashboard', 'page', 'component', 'make it look better', 'polish', 'pretty', 'professional', 'user experience', 'layout', 'visual', 'mobile-first', 'dark mode', 'accessibility', 'colors', 'typography', 'brand'.
Check for and apply IJFW updates safely. Trigger: 'update ijfw', 'upgrade', 'latest version', 'is there a new version', /update
Use when the user says: 'build', 'create', 'plan', 'new project', 'brainstorm', 'design', 'UI', 'website', 'dashboard', 'app', 'help me build', 'launch', 'book', 'campaign', or anything project-level. Skill body decides Quick vs Deep path.
Check for and apply IJFW updates safely. Trigger: 'update ijfw', 'upgrade', 'latest version', 'is there a new version', /update
Compress memory/context files into terse form. Trigger: /compress, compress file
Generate a cross-platform multi-model audit (Trident) on a diff, brief, or artifact. Trigger: 'cross audit', 'Trident', 'second opinion', 'check with other models', 'check with other AIs', 'cross-check this', 'get another perspective', /cross-audit
| name | ijfw-agents-md |
| description | Maintain canonical AGENTS.md (open spec). Trigger: 'agents.md', 'update AGENTS.md', or auto-fired by ijfw-team after agent generation. |
| context | fork |
| model | sonnet |
Maintains a project's AGENTS.md per the open spec at https://agents.md/.
AGENTS.md is the canonical agent-instructions surface across every IJFW host
(Claude, Gemini, Codex, Wayland, Hermes, Cursor, Windsurf, Copilot). Each
platform-specific file (CLAUDE.md, GEMINI.md, WAYLAND.md, etc.) is a
thin adapter that points here.
ijfw-team after generating agents to .ijfw/agents/.ijfw-workflow at brainstorm-LOCK and plan-LOCK with intent context (v1.4.4 N7).The file is segmented by four IJFW-managed regions. Content outside markers is user-authored and untouched.
| Block | Purpose |
|---|---|
| MEMORY | Pointer to project memory + last handoff summary |
| ROUTING | Peer-skill routing rules (workflow, design, etc.) |
| AGENTS | Auto-generated agent definitions from .ijfw/agents/ |
| BLACKBOARD | Reserved for Pillar B (multi-CLI orchestration); empty |
| DISCIPLINE | Per-domain discipline rules (code | narrative | business | design | research) |
Each block is delimited by <!-- IJFW-<NAME>-START --> /
<!-- IJFW-<NAME>-END --> markers. Replace inside; never overwrite.
YAML frontmatter at top of file follows the JSON Schema at
schema/agents-md-frontmatter.json. Keys that A1 may write or hoist:
ijfw_version, ijfw_schema (required when present)type, primary_type, secondary_types, confidence (A3 writes)detected_at, signals (A3 writes)compute_trust (vm_only | subprocess), compute_net (deny | allow)Wayland reads compute_trust + compute_net to set per-project sandbox
defaults. Env vars override only when explicitly set.
scripts/lock.sh -- PID lockfile + atomic rename guarantees
concurrent invocations serialise without clobbering.lock.sh invokes scripts/merge-block-aware.sh <path> <BLOCK> <content>
which replaces marker-bounded regions atomically.AGENTS.md is absent, the merger seeds it from
templates/AGENTS.md.tmpl.YAML frontmatter at top + GitHub-style heading slugs (lowercase, hyphenated). This is the load-bearing subset of the open AGENTS.md spec; section anchors remain stable for cross-tool references.
The reserved BLACKBOARD marker block is now populated by
mcp-server/src/orchestrator/wave-state.js::checkpointWave after every wave
checkpoint. This activates Pillar B (multi-CLI orchestration) without requiring
any manual skill invocation.
{
"state_path": ".ijfw/wave-<waveId>/STATE.md",
"last_completions": [
"<waveId>: <summary line 1>",
"<waveId>: <summary line 2>",
"<waveId>: <summary line 3>"
]
}
state_path — JSON pointer to the active wave's STATE.md.last_completions — last N=3 completion summaries (configurable; default 3).
Drawn from the body field of each wave's STATE.md, newest first.<!-- IJFW-BLACKBOARD-START --> and <!-- IJFW-BLACKBOARD-END --> markers.merge-block-aware.sh with
BLACKBOARD as the block argument — same mechanism as MEMORY/ROUTING/AGENTS.\n terminator.
Re-running on unchanged STATE.md produces byte-identical output; git sees no
diff noise.{} inside the
block rather than omitting the block entirely (markers must remain present).The DISCIPLINE marker block is populated by
mcp-server/src/orchestrator/agents-md-blackboard.js::populateDisciplineBlock
at brainstorm-LOCK and plan-LOCK in ijfw-workflow. It injects per-domain
rules so every agent operating in the project gets domain-appropriate
discipline guidance without manual configuration.
The block body is the raw text of the matching
claude/skills/ijfw-agents-md/templates/discipline-<type>.md file, written
verbatim between the markers. For unknown or mixed project types the body
is intentionally empty (markers present, body empty — this is the correct
state, not an error).
Example for a code project (abbreviated):
<!-- IJFW-DISCIPLINE-START -->
# Code Discipline
Working code only. Finish the job. Plausibility is not correctness.
…
<!-- IJFW-DISCIPLINE-END -->
<!-- IJFW-DISCIPLINE-START --> and <!-- IJFW-DISCIPLINE-END --> markers.mergeFile() from
merge-block-aware.js with DISCIPLINE as the block name — same mechanism
as MEMORY/ROUTING/AGENTS/BLACKBOARD.withFsLock tier-#8 AGENTS.md lock as populateBlackboardBlock —
both writers serialise on the single §3 #8 lock so concurrent fires cannot
interleave their writes.populateDisciplineBlock on unchanged project
type produces byte-identical output; git sees no diff noise. The template
files are static; the content written is purely a function of projectType.selectDisciplineTemplate returns an empty
string (for unknown or mixed types), mergeFile still writes the
block — the marker pair is present in AGENTS.md with an empty body. This
is intentional: consumers can detect the block's presence without needing
to distinguish "block absent" from "block empty".ijfw-workflow fires populateDisciplineBlock at:
These are the same LOCK hooks that fire populateBlackboardBlock and
intent-aware seeding — the three fires are sequential within the same lock
acquisition to preserve the §3 ordering invariant.
When projectType is not supplied explicitly, populateDisciplineBlock calls
detectProjectTypeFromRepo(projectRoot) from discipline-selector.js to
infer the type. Detection priority:
.ijfw/memory/brief.md frontmatter type key — highest fidelity, set by
brainstorm-LOCK.code: package.json, tsconfig.json, Cargo.toml, go.mod,
pyproject.toml, setup.py, Gemfile, or any *.csproj in root.narrative: chapters/ or manuscript/ directory present.business: root entry starting with pitch-deck or business-plan, or
any *.numbers file.design: root entry starting with figma-, any *.sketch file, or
design-system/ directory.research: research/ or notebooks/ directory, or any *.ipynb file.unknown: fallback when no signal matches.When AGENTS.md is being created fresh (file missing), the bootstrap is fed
intent context from the active brainstorm/plan output (.ijfw/memory/brief.md
if present). The bootstrap merges that intent into the initial AGENTS.md body
under a ## Project intent (seeded from brainstorm) H2 so every subagent has
project goals visible from the first session.
AGENTS.md already exists, intent seeding does
NOT run — idempotent by design. Existing files receive brainstorm context
as a BLACKBOARD block update instead (see "BLACKBOARD Block Population")..ijfw/memory/brief.md is absent, bootstrap
proceeds from the static template without the intent section.ijfw-workflow fires this skill at brainstorm-LOCK
and plan-LOCK with the intent context. The skill self-detects whether
AGENTS.md exists to decide seed vs. blackboard-update path.IDE is detected via mcp-server/src/ide-detect.js (shipped in v1.4.3 B18).
When the skill runs and the detected platform file is missing, it is created
from the matching adapter template.
| Detected IDE | Missing file | Template source |
|---|---|---|
| Claude | CLAUDE.md | templates/CLAUDE.md.adapter.tmpl |
| Gemini | GEMINI.md | templates/GEMINI.md.adapter.tmpl |
| Hermes | HERMES.md | templates/HERMES.md.adapter.tmpl |
| Wayland | WAYLAND.md | templates/WAYLAND.md.adapter.tmpl |
# <IDE>
All project conventions live in [AGENTS.md](./AGENTS.md). Read it first.
<IDE>.md already exists, it is never touched.ide-detect.js
positively identifies the platform — never speculatively.templates/ directory. If the template is absent, the adapter is written
inline from the body above rather than failing..bak restore unless the user explicitly confirms.