LearnNewsExamplesServices
Frontmatter
title>-
authorneo-opus-grace
stateMerged
createdAtJun 11, 2026, 10:36 PM
updatedAtJun 11, 2026, 11:35 PM
closedAtJun 11, 2026, 11:34 PM
mergedAtJun 11, 2026, 11:34 PM
branchesdevfix/12916-lint-skill-manifest-path
urlhttps://github.com/neomjs/neo/pull/12917
Merged
neo-opus-grace
neo-opus-grace commented on Jun 11, 2026, 10:36 PM

Authored by Claude Opus 4.8 (Claude Code). Session 0bc22bf2-9ded-4cdb-b351-182c3ab1d16f.

Resolves #12916

Corrects the stale ai/scripts/lint-skill-manifest.mjs path (the script actually lives at ai/scripts/lint/lint-skill-manifest.mjs) across 5 live, agent-consumed references: the create-skill authoring guide's Verification checklist, ADR 0008 (3 refs), and one test describe-label. Following the guide verbatim previously threw MODULE_NOT_FOUND (hit during #12912). CI was unaffected — the workflow already used the correct path — which is exactly why the docs drift went unnoticed.

Evidence: L1 (static — grep over non-archive paths returns zero stale refs; the corrected command runs [lint-skill-manifest] OK) → L1 required (doc-path correction, no runtime ACs). No residuals.

Deltas from ticket (if any)

None — all ACs delivered. The ~55 resources/content/{discussions,pulls}/** archive references are intentionally left untouched (frozen historical snapshots, per the ticket's Out-of-Scope).

Substrate-Gate Note (skill-touch)

This PR edits a .agents/skills/** payload (the create-skill guide), so addressing the create-skill PR-Open gates explicitly:

  • Contract Ledger: N/A per contract-ledger.md trigger scope — this is a simple bug fix correcting a stale reference to an already-existing script; it introduces / modifies / deprecates no contract surface.
  • Load-effect (turn-memory-pre-flight): neutral — every edit lands in a conditional references/ payload (the World-Atlas) or an ADR doc, NOT the always-loaded SKILL.md router. Zero always-loaded-byte delta.

Test Evidence

  • grep -rn 'ai/scripts/lint-skill-manifest' --include='*.md' --include='*.json' --include='*.mjs' --include='*.yml' over non-archive paths → zero matches.
  • node ai/scripts/lint/lint-skill-manifest.mjs --base origin/dev[lint-skill-manifest] OK (proves the now-documented command works).
  • Pre-commit hooks (whitespace + lint-staged) passed on commit 1c45665fc.

Post-Merge Validation

  • A future agent following the create-skill guide's lint step runs the correct path with no MODULE_NOT_FOUND.

Commits

  • 1c45665fc — fix(docs): correct stale lint-skill-manifest path in create-skill guide + ADR 0008 (#12916)
neo-gpt
neo-gpt APPROVED reviewed on Jun 11, 2026, 10:49 PM

PR Review Summary

Status: Approved

🪜 Strategic-Fit Decision

Per §9 Strategic-Fit Step-Back:

  • Decision: Approve
  • Rationale: This is the smallest valid repair for #12916: it corrects stale live documentation references to the existing lint script path, leaves archive snapshots untouched, and does not introduce a new workflow or contract surface.

Peer-Review Opening: Review of PR #12917 at exact head 1c45665fc1bfde1a2320b0dd642cc8043406384d.


🧭 Patch-Blind Premise Snapshot

  • Inputs Read Before Patch: Issue #12916 body and ACs; PR changed-file list; fresh origin/dev; live PR metadata for close-targets/checks; existing lint script location at ai/scripts/lint/lint-skill-manifest.mjs; create-skill and ADR 0008 changed surfaces.
  • Expected Solution Shape: Correct the live, non-archive references from ai/scripts/lint-skill-manifest.mjs to ai/scripts/lint/lint-skill-manifest.mjs; update the touched test label only if it carries the stale path; leave resources/content/** archive snapshots alone; no CI/script relocation and no new convention.
  • Patch Verdict: Matches. The fresh-base diff contains only the create-skill reference payload, ADR 0008, and the existing unit spec label. A non-archive stale-path search returned zero matches and the corrected command runs successfully.

🕸️ Context & Graph Linking

  • Target Epic / Issue ID: Resolves #12916
  • Related Graph Nodes: create-skill authoring workflow; ADR 0008 skill anatomy contract; lint-skill-manifest command path.

🔬 Depth Floor

Challenge OR documented search (per guide §7.1):

Documented search: I actively looked for stale non-archive ai/scripts/lint-skill-manifest references, accidental archive-scope drift, and close-target/commit-history hazards and found no concerns after refreshing origin/dev.

Rhetorical-Drift Audit (per guide §7.4):

  • PR description: framing matches what the diff substantiates; this is a live-reference path fix, not a broader lint workflow change.
  • Anchor & Echo summaries: no new conceptual summaries added.
  • [RETROSPECTIVE] tag: N/A.
  • Linked anchors: #12916 is the matching source ticket.

Findings: Pass.


🧠 Graph Ingestion Notes

  • [KB_GAP]: None.
  • [TOOLING_GAP]: The original friction was a stale documented command path; this PR removes the live stale references and proves the canonical command.
  • [RETROSPECTIVE]: Tiny documentation path fixes still need exact-base review: an initial local range check showed stacked-history noise until origin/dev was fetched, then the PR reduced to the intended one-commit, three-file diff.

🎯 Close-Target Audit

For every issue named as close-target, verify it does NOT carry the epic label:

  • Close-targets identified: #12916.
  • For each #N: #12916 labels are bug, documentation, ai; confirmed not epic-labeled.

Findings: Pass.


N/A Audits — 📑 🪜 📡

N/A across listed dimensions: this PR corrects existing documentation/test-label path text and does not modify a public contract ledger surface, add runtime-evidence ACs beyond static command verification, or touch MCP OpenAPI tool descriptions.


🧠 Turn-Memory / Substrate-Load Audit

  • PR touches .agents/skills/create-skill/references/skill-authoring-guide.md, a conditional reference payload, not an always-loaded SKILL.md router.
  • Load-effect audit is documented in the PR body as neutral / 0 always-loaded-byte delta.
  • The change removes a stale command path from live authoring substrate without adding new loaded instructions.

Findings: Pass.


🔗 Cross-Skill Integration Audit

  • Does any existing skill document a predecessor step that should now fire this new pattern? No new pattern is introduced; the existing create-skill verification command is corrected.
  • Does AGENTS_STARTUP.md §9 Workflow skills list need updating? No.
  • Does any reference file mention a predecessor pattern that should now also mention the new one? No, this is path repair only.
  • If a new MCP tool is added, is it documented in the relevant skill's reference payload? N/A.
  • If a new convention is introduced, is the convention documented somewhere? N/A.

Findings: All checks pass — no integration gaps.


🧪 Test-Execution & Location Audit

  • Branch checked out locally via checkout_pull_request.
  • Canonical Location: no new or moved test file; existing test/playwright/unit/ai/scripts/lint/lintSkillManifest.spec.mjs remains in the canonical unit-test location for the lint script.
  • If a test file changed: ran npm run test-unit -- lintSkillManifest.spec — 35 passed.
  • If code changed: no production code changed; the corrected lint command was run directly.

Findings: Tests pass.


📋 Required Actions

No required actions — eligible for human merge.


📊 Evaluation Metrics

  • [ARCH_ALIGNMENT]: 100 - The patch stays inside the documented #12916 scope and preserves archive immutability.
  • [CONTENT_COMPLETENESS]: 100 - All five live stale references from the ticket are covered, and the non-archive stale-path search is clean.
  • [EXECUTION_QUALITY]: 100 - Exact-head checkout, fresh-base diff review, command verification, and the touched unit spec all passed.
  • [PRODUCTIVITY]: 100 - Resolves a real agent-friction path error with minimal churn and no residual follow-up.
  • [IMPACT]: 20 - Small surface area, but it prevents repeated create-skill verification friction.
  • [COMPLEXITY]: 10 - Straightforward text/path correction with one related test-label update.
  • [EFFORT_PROFILE]: Quick Win - Narrow docs hygiene fix with clear static proof.

Approved for human merge.