mirror of
https://github.com/alirezarezvani/ClaudeForge.git
synced 2026-07-04 19:03:15 -04:00
7d22a50c37978d20d4347825f6a6c9c0c5191310
3 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
7d22a50c37 |
feat(plugin): /claude-to-agents — convert CLAUDE.md to AGENTS.md for codex / gemini users
Cross-tool adoption. Codex, Gemini Code Assist, and any AI tool honouring
the AGENTS.md convention can now read the same instructions as Claude,
without the user maintaining two files by hand.
hooks/claude-to-agents.py (new, standalone, idempotent):
- argparse: --mode={symlink,copy,inline-chain} (default symlink),
--source (default CLAUDE.md), --output (default AGENTS.md), --force.
- Symlink mode: ln -s CLAUDE.md AGENTS.md. Windows falls back to
--copy with a stderr notice.
- Copy mode: byte-for-byte snapshot via shutil.copyfile.
- Inline-chain mode: depth-first walk of @path imports, recursive,
cycle-safe (each file read at most once). Output flattens every
chained sub-file under <!-- inlined from <rel> --> markers and
strips two flavours of Claude-only scaffolding:
• The @path import lines themselves (other tools don't resolve
them).
• Backlink quote-blocks ("> Parent context: ..." /
"> Chained import: `@../CLAUDE.md`") that we emit on every
sub-CLAUDE.md.
- Safety: existing AGENTS.md (file or symlink) is renamed to
AGENTS.md.backup.<UTC-ts> before overwrite. --force skips the
backup. Microsecond timestamp precision so back-to-back writes
don't collide.
- Exit codes: 0 success, 1 user error (missing source / unknown
mode), 2 filesystem error (symlink failure).
command/claude-to-agents.md (new slash command):
- allowed-tools: Read, Write, Glob, Bash(python3:*), Bash(ls:*),
Bash(test:*), Bash(readlink:*).
- disallowedTools: WebFetch, WebSearch (no exfiltration vector).
- argument-hint and when_to_use surface the three modes.
- Body specifies a heuristic: default to --symlink for single-file
projects, recommend --inline-chain when find . -name CLAUDE.md
returns more than one. Documents per-mode verification commands.
.claude-plugin/plugin.json:
Registers ./command/claude-to-agents.md alongside the existing two.
install.sh + install.ps1:
Banner and uninstall sections list the new command. The command
install loop already iterates command/*.md so the file itself is
copied automatically.
README.md:
/claude-to-agents added to "What's Included" under Slash commands
with a one-paragraph description covering all three modes.
Quick Stats: "2 slash commands" -> "3 slash commands".
CHANGELOG.md:
New "wave 5" entry under [Unreleased].
Verified (7/7 integration checks):
- Plugin manifest registers the command; all 9 referenced paths
resolve on disk.
- Slash command frontmatter has all required fields including
WebFetch in disallowedTools.
- Script has executable bit set.
- Both install scripts list claude-to-agents.md.
- install.sh passes bash -n.
- End-to-end against a synthetic chained CLAUDE.md tree with a
deliberate back-import cycle: symlink mode creates valid symlink;
copy mode produces bytewise-identical AGENTS.md and backs up the
prior symlink (1 backup); inline-chain mode inlines both
sub-files, strips backlinks AND chain-import lines, handles the
cycle (each file read once), backs up the prior file (2 backups
total).
- Missing source returns rc=1 with stderr message.
|
||
|
|
45767e8840 |
feat(skills): three forked task-style audit skills + /sync-claude-md --weekly orchestration
Three new task-style skills, each using Anthropic's context: fork + agent:
Explore so the work happens in an isolated subagent context and only a
short summary returns to the main session.
skill/claude-md-drift-audit/SKILL.md (51 lines):
Walks the last N days of git history (default 7) and flags CLAUDE.md
lines that reference deleted paths, renamed paths, or removed
dependencies from that window. Returns a punch list with file:line.
Read-only. Standalone invocation: /claude-md-drift-audit [days=7].
skill/claude-md-link-check/SKILL.md (51 lines):
Verifies every @path chain import and every relative markdown link
inside every CLAUDE.md resolves to an existing file. Returns broken
links with file:line. Read-only. Standalone: /claude-md-link-check
[path-glob].
skill/claude-md-dependency-rescan/SKILL.md (54 lines):
Re-detects the project's tech stack from package.json /
requirements.txt / pyproject.toml / go.mod / Cargo.toml and diffs
against every CLAUDE.md's Tech Stack section. Returns added /
removed / renamed per file. Read-only. Standalone:
/claude-md-dependency-rescan [manifest-path].
command/sync-claude-md.md:
- argument-hint and when_to_use mention --weekly.
- New Phase 0 (only when --weekly is passed): invoke the three skills
above in parallel via the Skill tool, aggregate findings into
## Weekly Audit Summary, then proceed to existing Phase 1.
- Without --weekly, Phase 0 is skipped entirely (no behaviour change
for normal sync runs).
.claude-plugin/plugin.json:
skills array now lists all five entries (existing two + three new).
Verified (6/6 smoke tests):
- Plugin manifest is valid JSON; 5 skills registered; all 8
referenced paths resolve on disk.
- Each new SKILL.md parses; context=fork, agent=Explore, both
description and when_to_use present, allowed-tools is a list,
body ≤ 60 lines.
- Each body is imperative (numbered steps present, not reference
material — fork-context requires explicit task instructions).
- Sync command body contains Phase 0, all three skill references,
parallel-invocation language, and Skill in allowed-tools.
- Skill name in frontmatter matches the directory name for every
new skill (so /claude-md-drift-audit etc. register correctly).
|
||
|
|
a45e6f5dbd |
feat(plugin): ship as Claude Code plugin with 150-line cap and sync command
Turns ClaudeForge into an installable Claude Code plugin and adds the missing pieces for a clean lifecycle: hard line-cap enforcement, modular chaining via @path imports, a sync/cleanup command, and Explore-agent delegation for project discovery. - .claude-plugin/plugin.json: plugin manifest registering both skills, both commands, and the guardian agent (installable via /plugin marketplace add alirezarezvani/ClaudeForge && /plugin install claudeforge) - skill/validator.py: MAX_RECOMMENDED_LINES 300 -> 150 (warning at 120) - skill/template_selector.py: target_lines capped at 150 across all team sizes (solo 75 / small 100 / medium 125 / large 150) so any single CLAUDE.md fits within the cap; bigger projects spread content across modular sub-files - skill/analyzer.py: length thresholds, quality scoring, and recommendations rebased on the 150 cap (was 300/400) - skill/generator.py: modular root now emits @path imports next to the human-readable links; every sub-CLAUDE.md gets a back-link header pointing to ../CLAUDE.md (markdown + @import) for bidirectional chaining - command/sync-claude-md.md: new /sync-claude-md command that inventories every CLAUDE.md, prunes stale references, enforces the 150 cap by splitting into sub-files, and repairs the root <-> sub chain - command/enhance-claude-md.md: discovery phase now delegates the deep codebase scan to the Explore subagent to keep context lean - install.sh / install.ps1: each command in command/ installs as its own ~/.claude/commands/<name>.md (legacy bundle backed up on upgrade) - skill/SKILL.md, CLAUDE.md, README.md, CHANGELOG.md: docs updated for the plugin install path, sync command, and new line cap Verified via smoke test: validator constants, template targets, generator output line counts across 5 presets (all <= 150), context files with backlinks, @-import chain in modular root, idempotent merge_with_existing, validator status transitions at the new cap, analyzer quality differential, and plugin manifest JSON shape with all referenced paths existing on disk. |