[repository-quality] 🎯 Repository Quality Improvement Report - Skill Documentation Drift (Stale JavaScript Architecture References) #57448
Closed
Replies: 1 comment
|
This discussion was automatically closed because it expired on 2026-09-01T13:03:47.019Z.
|
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Analysis Date: 2026-08-31
Focus Area: Skill Documentation Drift — Stale JavaScript Architecture References
Strategy Type: Custom
Custom Area: Yes — the repo's own
.github/skills/*/SKILL.mdfiles are load-bearing operational documentation consumed directly by Copilot agents (perAGENTS.md's lazy-skill-loading policy). A scripted cross-reference audit of all 52 skill directories found that two of the highest-traffic skills (javascript-refactoring,messages) still document a JavaScript embedding/bundling architecture (pkg/workflow/js.gowith real(go/redacted):embeddirectives,pkg/workflow/scripts.go,pkg/workflow/bundler.go,GetJavaScriptSources()returning real script content) that has been fully replaced by a custom-actions architecture (actions/setup/js/*.cjs, 827 files) wherejs.go's embedded-script functions now return empty strings/placeholders by design. Agents following these skills verbatim would edit files that no longer do anything, silently producing broken workflows.Executive Summary
A repo-wide scan of every
.github/skills/*/SKILL.mdfor referenced file paths turned up 89 candidate broken references. After filtering false positives (code identifiers mistaken for filenames, e.g.helpers.go/utils.goused as anti-pattern examples, or generated docs likegithub-mcp-tools-report.md), two skills contain genuinely obsolete, actionable architecture documentation:javascript-refactoring/SKILL.mdandmessages/SKILL.md. Both instruct contributors to add(go/redacted):embeddirectives and script-source variables topkg/workflow/js.goand a nonexistentpkg/workflow/scripts.go/bundler.go. In the current codebase,pkg/workflow/js.gois a 30-line stub whoseGetJavaScriptSources()returns an empty map and whose getter functions return""— all real script embedding and bundling now happens per-action underactions/setup/js/*.cjs(827 files, described inactions/README.md's "Generating Actions from JavaScript Modules" section). A handful of smaller stale references were also found indeveloper-internals/SKILL.md(validation_strict_mode.go,strict_mode.go,expression_safety.go— files that were split/renamed intostrict_mode_*.goandexpression_safety_validation.go/expression_safety_test.go) anderror-pattern-safety/SKILL.md(test file names that no longer exist verbatim).The risk is concrete and near-term: any Copilot agent invoking the
javascript-refactoringormessagesskill today to add a new safe-output message type would follow Step 3/Step 8 instructions to add embed directives tojs.go, which has zero effect on the compiled binary, and the change would silently fail to ship the new script. Recommended immediate action is to rewrite these two skills against the currentactions/-based architecture (mirroringactions/README.md's already-accurate "Creating a New Action" walkthrough), followed by fixing the smaller path staleness indeveloper-internalsanderror-pattern-safety, and adding a lightweight CI check that greps skill files for path-like backtick references and fails if the referenced file doesn't exist anywhere in the repo.Full Analysis Report
Focus Area: Skill Documentation Drift — Stale JavaScript Architecture References
Current State Assessment
The repository ships 52 skills under
.github/skills/that are lazily loaded by agents perAGENTS.md. These are treated as authoritative, load-bearing instructions — not advisory docs — so factual drift directly causes incorrect agent behavior. A custom audit script extracted every backtick-quoted path ending in.go,.md,.yml,.yaml, or.jsonfrom eachSKILL.mdand checked existence relative to repo root and the skill's own directory.Metrics Collected:
javascript-refactoring,messages)developer-internals,error-pattern-safety)pkg/workflow/js.goreal vs. stubGetJavaScriptSources()returnsmap[string]string{})actions/setup/js/*.cjs(827 files)actions/README.mdaccuracy vs. actual dir listingsetup,setup-cli,noop,minimize_comment,close_issue,close_pull_request,close_discussion); onlysetup/andsetup-cli/exist as top-level dirs — the others are files/handlers withinactions/setup/js/, not separate action directoriesFindings
Strengths
actions/README.mdaccurately documents the current custom-actions architecture, including a correct "Generating Actions from JavaScript Modules" and "Creating a New Action" workflow — this is the right source of truth to port into the stale skills.Areas for Improvement
javascript-refactoring/SKILL.md(485 lines) instructs adding(go/redacted):embeddirectives topkg/workflow/js.goand creating/editingpkg/workflow/scripts.goandpkg/workflow/bundler.go— none of which reflect the real embed/bundle path (actions/setup/js/*.cjs, bundled peractions/README.md). Following this skill literally produces a no-op change.messages/SKILL.md(312 lines) Step 8 ("Register in Go Embeddings") and its File Summary table both point atpkg/workflow/safe_outputs.goandjs.gofor adding new message JS modules — same stale-architecture issue as above, in the skill most likely to be invoked when adding a new safe-output type.developer-internals/SKILL.mdreferencespkg/workflow/strict_mode.go,pkg/workflow/validation_strict_mode.go, andpkg/workflow/expression_safety.goas single files; the codebase has since split strict-mode logic intostrict_mode_validation.go,strict_mode_steps_validation.go,strict_mode_network_validation.go, etc., and expression safety intoexpression_safety_validation.go/expression_safety_test.go.error-pattern-safety/SKILL.mdcitespkg/workflow/error_pattern_tuning_test.goandpkg/workflow/engine_error_patterns_infinite_loop_test.goas exact file paths in a bulleted "test files to run" list; neither exists under those exact names in the current tree, so a copy-pasted test command from this skill will fail with "no such file".Detailed Analysis
The root cause is architectural: gh-aw previously embedded and bundled JavaScript directly into the Go binary via
(go/redacted):embed(documented faithfully byjavascript-refactoringandmessages), then migrated to a model where JavaScript lives as standalone.cjsfiles underactions/{action-name}/js/, packaged per-action and referenced by workflows viaactions/setup(827 files underactions/setup/js/). The migration leftpkg/workflow/js.goin place as a stub (GetJavaScriptSources()returns an empty map; individual getters return""or"EXTERNAL_SCRIPT"placeholders), presumably for backward-compatible call sites, but the two skills teaching contributors how to add new JS never got updated to match. Because these skills are the canonical guidance a Copilot agent loads before making JS-related changes (per the "Lazy Skill Loading Policy" inAGENTS.md), an agent has no signal that the documented workflow is defunct — it will successfully compile Go code that adds a dead embed variable while never touching the realactions/setup/js/*.cjsfiles the workflow runtime actually loads. The fix requires rewriting Steps 3 and 8 ofjavascript-refactoringandmessagesto followactions/README.md's already-correct "Creating a New Action" / "Generating Actions from JavaScript Modules" pattern, plus lower-priority path-name touchups indeveloper-internalsanderror-pattern-safety, plus a CI guard to prevent recurrence.🤖 Tasks for Copilot Agent
NOTE TO PLANNER AGENT: Split the following tasks into individual work items.
Improvement Tasks
Task 1: Rewrite javascript-refactoring skill for the actions/ architecture
Priority: High
Estimated Effort: Medium
Focus Area: Skill Documentation Drift
Description: Update
.github/skills/javascript-refactoring/SKILL.mdto remove all instructions referencingpkg/workflow/js.goas a live embed target,pkg/workflow/scripts.go, andpkg/workflow/bundler.go. Replace with accurate steps for adding/refactoring JavaScript underactions/{action-name}/js/*.cjs, following the pattern already documented inactions/README.md("Generating Actions from JavaScript Modules" and "Creating a New Action" sections). Preserve any still-valid general refactoring guidance (splitting large.cjsfiles,require()usage, testing conventions).Acceptance Criteria:
pkg/workflow/scripts.goorpkg/workflow/bundler.goas real files to editpkg/workflow/js.goreferences, if kept, are annotated as legacy/stub, or removed entirelyactions/setup/js/*.cjsand the action-based bundling process fromactions/README.mdCode Region:
.github/skills/javascript-refactoring/SKILL.mdTask 2: Fix messages skill's obsolete Go-embedding steps
Priority: High
Estimated Effort: Small
Focus Area: Skill Documentation Drift
Description: Update
.github/skills/messages/SKILL.md, specifically "Step 8: Register in Go Embeddings", the "Verification Checklist" item "Go embed directive added injs.go", and the "File Summary" table row forpkg/workflow/js.go. These currently instruct adding real(go/redacted):embeddirectives, which have no effect sincejs.go'sGetJavaScriptSources()is hardcoded to return an empty map. Replace with the correct current step for wiring a new message's JavaScript module intoactions/setup/js/so it is actually shipped in compiled workflows.Acceptance Criteria:
actions/setup/js/), not the defunctjs.goembed stepsafe_output_handlers.goregistration flow to confirm accuracy before finalizing wordingCode Region:
.github/skills/messages/SKILL.mdTask 3: Correct renamed/split file references in developer-internals skill
Priority: Medium
Estimated Effort: Small
Focus Area: Skill Documentation Drift
Description:
.github/skills/developer-internals/SKILL.mdreferencespkg/workflow/strict_mode.go,pkg/workflow/validation_strict_mode.go, andpkg/workflow/expression_safety.goas single files (lines ~30, 33, 68, 92, 101). These have since been split into multiple files: strict-mode logic now spansstrict_mode_validation.go,strict_mode_steps_validation.go,strict_mode_network_validation.go,strict_mode_permissions_validation.go,strict_mode_sandbox_validation.go,strict_mode_env_validation.go,strict_mode_update_check_validation.go, andstrict_mode_llm_gateway_test.go/strict_mode_zizmor_test.go(plus corresponding_test.gofiles); expression safety now lives inexpression_safety_validation.goandexpression_safety_test.go. Update the file references and any accompanying diagrams to reflect the actual current file layout.Acceptance Criteria:
pkg/workflow/strict_mode.go/validation_strict_mode.go/expression_safety.gomentions replaced with the correct current file name(s) for the context they appear ingrep -n "strict_mode.go\|validation_strict_mode.go\|expression_safety.go" .github/skills/developer-internals/SKILL.mdreturns no matches (or only matches clearly marked historical)Code Region:
.github/skills/developer-internals/SKILL.md(lines ~30, 33, 68, 92, 101)Task 4: Add a skill-reference integrity CI check
Priority: Medium
Estimated Effort: Medium
Focus Area: Skill Documentation Drift (prevention)
Description: Add a lightweight Makefile target and/or CI step that scans all
.github/skills/*/SKILL.mdfiles for backtick-quoted paths that look like source files (.go,.cjs,.mdunder known doc/action dirs) and verifies they exist somewhere in the repo, failing (or warning) when a referenced file is missing. This turns today's ad-hoc audit into a repeatable check that prevents this class of drift from silently recurring after future refactors.Acceptance Criteria:
make lint-skill-references) or script underpkg/orscripts/that performs the auditutils.go,helpers.goused illustratively) via an allowlist/exception mechanism, so the check is precise enough to be enabled by default.github/skills/developer/SKILL.mdor equivalent as part of the standard validation playbookCode Region: New file, e.g.
pkg/cli/lint_skill_references.goor ascripts/check-skill-references.sh, plusMakefile📊 Historical Context
Previous Focus Areas
🎯 Recommendations
Immediate Actions (This Week)
javascript-refactoring/SKILL.mdandmessages/SKILL.mdStep 8 to match theactions/architecture — Priority: HighShort-term Actions (This Month)
developer-internals/SKILL.mdanderror-pattern-safety/SKILL.md— Priority: Mediumlint-skill-referencesCI check — Priority: MediumLong-term Actions (This Quarter)
📈 Success Metrics
make lint-skill-referencesreporting target in placeNext Steps
Generated by Repository Quality Improvement Agent
Next analysis: 2026-09-01 — Focus area selected by diversity algorithm
All reactions