ci: fix markdownlint config loading + osint-autopilot frontmatter - #18
Merged
Conversation
elementalsouls
added a commit
that referenced
this pull request
Aug 11, 2026
Both lint jobs have been red on main since 4f47608 — for two unrelated reasons, neither a genuine content problem. Markdown lint: the workflow passed rule config to `markdownlint-cli2-action` via the `config:` input, but that input is a config-file PATH, not literal config. The action tried to open the JSON blob as a filename and errored out before linting anything (`Unable to use configuration file '{...'`). Moved the rules to an auto-discovered `.markdownlint-cli2.jsonc` and dropped the inline input. Once config actually loaded, 479 pre-existing violations surfaced (never enforced because the job had always errored). `--fix` cleared the mechanical ones (blanks around fences/lists/headings, trailing spaces, bare-URL wrapping, bullet-style). Three rules are disabled as a deliberate project choice, consistent with the existing MD013/MD033/etc. disables: - MD040 (fenced-code language) — 128 blocks, mostly mixed shell+output; a guessed language tag would mislabel more than it documents. - MD036 (emphasis-as-heading) — the docs use bold lead-ins by design. - MD037/MD038 (spaces inside emphasis/code spans) — these actively CORRUPT technical tokens here: the `_amazonses` DNS record name and substring-match tokens like `access ` carry semantic spaces the fixer would strip. Off so no run can damage them. Two structural nits fixed by hand: a doubled `14.` in the exposure-risk-quantification self-test list (renumbered), and a hard-wrapped sentence in identity-provider-recon whose wrap point started a line with `- `, creating a false list (stray bullet removed). Frontmatter: skills/osint-autopilot/SKILL.md was missing the required `version` and `triggers` fields (every other skill has them). Added version 1.0 and 9 trigger phrases drawn from the skill's own description. Verified locally against markdownlint-cli2@0.15.0 (the version action@v18 bundles): 0 errors, and all 9 SKILL.md files pass the frontmatter check. Co-authored-by: Sachin Sharma <elementalsoul@Sachins-MacBook-Pro.local> Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Both lint jobs have been failing on
mainsince8dbbf0c— two unrelated causes, neither an actual content defect.1. Markdown lint — config never loaded
The workflow fed rule config to
markdownlint-cli2-actionthrough theconfig:input:But that input is a config-file path, not literal config. The action tried to open the JSON blob as a filename and died before linting a single file:
Moved the rules into an auto-discovered
.markdownlint-cli2.jsoncat repo root and dropped the broken inline input.2. The pre-existing violations that surfaced
Once config actually loaded, 479 violations appeared — all pre-existing, never enforced because the job had always errored out first.
--fixcleared the mechanical set (blanks around fences/lists/headings, trailing whitespace, bare-URL wrapping, bullet-style normalization).Three rules are disabled deliberately, consistent with the repo's existing
MD013/MD024/MD025/MD033/MD041disables:Why MD037/MD038 are off, not applied
--fixunder those rules edited semantically-meaningful content:`_amazonses`— a DNS TXT record name — had its leading space eaten because the_was parsed as an emphasis marker.`access `and`rdp `(documented as "substring, lowercased") had trailing spaces stripped, changing what they match.Stripping those is a content bug, so the rules are disabled rather than allowed to rewrite the tokens.
3. Two structural nits fixed by hand
exposure-risk-quantification/SKILL.md— self-test list had a doubled14.(items ran 1…14, 14, 15). Renumbered to 15, 16.identity-provider-recon/SKILL.md— a hard-wrapped sentence whose wrap point put-at line start, creating a false single-item list. Removed the stray bullet so it rejoins the paragraph.4. Frontmatter job — missing required fields
skills/osint-autopilot/SKILL.mdhad onlyname+description; the job requiresversionandtriggers(≥5), which every other skill carries:Added
version: 1.0and 9 trigger phrases drawn from the skill's own description.Verification
Against
markdownlint-cli2@0.15.0(the versionaction@v18bundles):Frontmatter check (CI logic, all 9 skills): every one
OK, triggers 9–127.The whole markdown diff is blank-line/whitespace mechanics plus the four intentional edits above — confirmed with
git diff --ignore-all-space, which shows only the URL-wrap, the two hand nits, and the autopilot frontmatter.Not touched
scripts/sync-skill-content.sh --checkwarnsSource missing: docs/full-skills/*.SKILL.full.md— pre-existing onmain, unrelated, left alone.🤖 Generated with Claude Code