chore(skills): re-sync vendored .agents/skills to skill-lib@d0f6209 - #113
Conversation
Bring the repo-local vendored skill copies back into verbatim compliance with the canonical org source (The-Interdependency/skill-lib @ d0f6209). The copies had drifted behind canonical (stale msdmd SKILL.md + parsers, missing collect.py/collection.ts/visualize.py, stale test-build/manifest/etc.). - Overlay canonical skill directories verbatim over the vendored subset each repo carries; repo-local additions (e.g. runner.py, local README, retained local skills) are preserved. - Regenerate manifest/generate.py.sha256 pins where present (sha256sum -c OK). - Pin the .agents/skills/README source commit to skill-lib@d0f6209. Repo-local copies are not the source of truth; skill-lib remains canonical. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J4hD57ejBTZYsuLKSpoE7P
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 653639cfd6
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| for block in block_names: | ||
| annotated, _ = walk_tree(root, block) |
There was a problem hiding this comment.
Parse RATIOS with its single-line reader
When block is RATIOS (included in DEFAULT_BLOCK_NAMES and selectable with --block RATIOS), this path still uses walk_tree, which only looks for fenced # === RATIOS === blocks. The new RATIOS support in parsers/universal.py is explicitly single-line via parse_ratios_file, so generated collections silently omit existing RATIOS declarations and --expected-block RATIOS reports files as missing even when they have the ratio lines.
Useful? React with 👍 / 👎.
| lines = text.splitlines() | ||
| if not lines: | ||
| return (False, False) | ||
| first_ok = bool(line_re.match(lines[0].rstrip())) |
There was a problem hiding this comment.
Check the first nonblank RATIOS line
For files that have leading blank lines, the RATIOS convention documented just above says placement is on the first and last non-blank lines, but this checks only physical line 1. A drift gate using ratios_placement() will therefore report (False, True) even when the first non-blank line is a valid ratios line, causing false placement failures for otherwise compliant files.
Useful? React with 👍 / 👎.
|
|
||
| emitted_nodes = {"repo"} | ||
| for declaration in collection.get("declarations", []): | ||
| node = _node_id(str(declaration["id"])) |
There was a problem hiding this comment.
Namespace visualizer node IDs by declaration
When two declarations share the same id in different blocks or files, this derives the Mermaid node key from only the id, so the second declaration is skipped by emitted_nodes and any edges are coalesced onto the first node. The msdmd rules only require ids to be unique within their block, so a collection with e.g. a CONTRACTS and DOCS entry using the same stable id will render an inaccurate graph unless the node key includes at least block/file context.
Useful? React with 👍 / 👎.
| "owner": "owns", | ||
| "covers": "covers", | ||
| "call": "calls", | ||
| "boundaries": "risk", |
There was a problem hiding this comment.
Map actual BOUNDARIES fields to risk edges
For BOUNDARIES blocks that declare the documented risk fields such as auth_boundary, storage_boundary, network_boundary, and user_data_boundary, _edges_for() never emits a risk edge because it only checks for a literal field named boundaries. Collections generated from the existing backend BOUNDARIES block therefore omit the boundary-risk relationships that the new visualizer guidance says should be rendered.
Useful? React with 👍 / 👎.
| can run it directly or copy it as a starting point: | ||
|
|
||
| ```bash | ||
| python -m msdmd.collect --root . --repo <reponame> --out <reponame>_msdmd.ts |
There was a problem hiding this comment.
Make the collection command runnable from repo root
In a consuming repo with this skill vendored under .agents/skills, running this documented command from the repo root fails because msdmd is not on Python's module search path; if the user instead changes into .agents/skills to make python -m work, --root . scans the skills directory rather than the repo. The command needs to set PYTHONPATH=.agents/skills or use another invocation that works from the intended root.
Useful? React with 👍 / 👎.
Summary
Part of an org-wide skill-lib compliance sweep. The repo-local vendored skill copies under
.agents/skills/had drifted behind the canonical org source (The-Interdependency/skill-lib). This re-syncs them verbatim to skill-libd0f6209.Changes
msdmd/,manifest/, andtest-build/skill directories verbatim.manifest/generate.py.sha256—sha256sum -cpasses, somanifest-check.ymlstays green.new-retain-old/skill..agents/skills/README.mdsource commit from@d6e4d78to@d0f6209.Verification
diff -ragainst canonical skill-lib: no remaining canonical-file drift in the vendored subset.sha256sum -c generate.py.sha256→generate.py: OK.Repo-local copies are not the source of truth;
skill-libremains canonical.🤖 Generated with Claude Code
https://claude.ai/code/session_01J4hD57ejBTZYsuLKSpoE7P
Generated by Claude Code