diff --git a/cli/aidd_docs/tasks/2026_04/2026_04_27-#260-plugin-architecture-master.md b/cli/aidd_docs/tasks/2026_04/2026_04_27-#260-plugin-architecture-master.md index 35b38813f..8a456193d 100644 --- a/cli/aidd_docs/tasks/2026_04/2026_04_27-#260-plugin-architecture-master.md +++ b/cli/aidd_docs/tasks/2026_04/2026_04_27-#260-plugin-architecture-master.md @@ -25,14 +25,14 @@ | Part | Scope | Branch | Depends on | |------|-------|--------|-----------| -| [Part 1](2026_04_27-#260-plugin-architecture-part-1.md) | Plugin domain model + manifest v3 + migration | `feat/260-plugin-architecture-part-1` | none | -| [Part 2](2026_04_27-#260-plugin-architecture-part-2.md) | Plugin format detection + PluginManifestReader + PluginTranslator | `feat/260-plugin-architecture-part-2` | Part 1 | -| [Part 3](2026_04_27-#260-plugin-architecture-part-3.md) | Framework loader plugin-aware + marketplace.json catalog | `feat/260-plugin-architecture-part-3` | Part 2 | -| [Part 4](2026_04_27-#260-plugin-architecture-part-4.md) | Plugin fetch pipeline + install adapters | `feat/260-plugin-architecture-part-4` | Part 3 | -| [Part 5](2026_04_27-#260-plugin-architecture-part-5.md) | `aidd plugin` command (add/remove/list/update) | `feat/260-plugin-architecture-part-5` | Part 4 | -| [Part 6](2026_04_27-#260-plugin-architecture-part-6.md) | Install wizard plugin selection step | `feat/260-plugin-architecture-part-6` | Part 5 | -| [Part 7](2026_04_27-#260-plugin-architecture-part-7.md) | Read/Write commands plugin-aware | `feat/260-plugin-architecture-part-7` | Part 6 | -| [Part 8](2026_04_27-#260-plugin-architecture-part-8.md) | Framework repo — Claude marketplace layout | `feat/260-plugin-architecture-part-8` | Part 7 validated | +| [Part 1](2026_04_27-%23260-plugin-architecture-part-1.md) | Plugin domain model + manifest v3 + migration | `feat/260-plugin-architecture-part-1` | none | +| [Part 2](2026_04_27-%23260-plugin-architecture-part-2.md) | Plugin format detection + PluginManifestReader + PluginTranslator | `feat/260-plugin-architecture-part-2` | Part 1 | +| [Part 3](2026_04_27-%23260-plugin-architecture-part-3.md) | Framework loader plugin-aware + marketplace.json catalog | `feat/260-plugin-architecture-part-3` | Part 2 | +| [Part 4](2026_04_27-%23260-plugin-architecture-part-4.md) | Plugin fetch pipeline + install adapters | `feat/260-plugin-architecture-part-4` | Part 3 | +| [Part 5](2026_04_27-%23260-plugin-architecture-part-5.md) | `aidd plugin` command (add/remove/list/update) | `feat/260-plugin-architecture-part-5` | Part 4 | +| [Part 6](2026_04_27-%23260-plugin-architecture-part-6.md) | Install wizard plugin selection step | `feat/260-plugin-architecture-part-6` | Part 5 | +| [Part 7](2026_04_27-%23260-plugin-architecture-part-7.md) | Read/Write commands plugin-aware | `feat/260-plugin-architecture-part-7` | Part 6 | +| [Part 8](2026_04_27-%23260-plugin-architecture-part-8.md) | Framework repo — Claude marketplace layout | `feat/260-plugin-architecture-part-8` | Part 7 validated | ## User Journey diff --git a/lefthook.yml b/lefthook.yml index 9575872c1..53bdf0ea1 100644 --- a/lefthook.yml +++ b/lefthook.yml @@ -51,14 +51,7 @@ pre-commit: echo "ℹ️ node not available; skipping markdown-links" exit 0 fi - # TEMPORARY (aidd-cli -> framework migration, phase 1): cli's own - # historical archives were never link-checked before landing here — - # 704 pre-existing, unrelated broken "links" (test fixtures with - # intentionally fake paths, old task docs using @src/foo.ts as an - # agent-mention shorthand, not a markdown link). See the migration - # plan's final phase for the follow-up that fixes the real links and - # removes these two --ignore flags. - node scripts/check-markdown-links.js --ignore cli/tests/fixtures --ignore cli/aidd_docs/tasks + node scripts/check-markdown-links.js summarize-plugin-catalogs: run: | [ -d plugins ] || exit 0 diff --git a/scripts/check-markdown-links.js b/scripts/check-markdown-links.js index 15b7dde6e..e5d6ca1aa 100644 --- a/scripts/check-markdown-links.js +++ b/scripts/check-markdown-links.js @@ -19,6 +19,8 @@ Ignored / excluded forms: - HTML angle-bracket links and HTML attributes - .git and node_modules directories - Runtime variables, glob patterns, and bare words + - cli/tests/fixtures/** (synthetic mock trees) and cli/aidd_docs/tasks/** + (historical task records), always, on top of any --ignore given How to fix broken links: | Need | Use | @@ -35,6 +37,12 @@ Examples: const SKIPPED_DIRS = new Set([".git", "node_modules", "worktrees", ".specstory"]); const SKIPPED_DIR_PREFIXES = [".tmp-check-markdown-links-"]; +// Always-ignored, not just a CLI --ignore convenience: cli/tests/fixtures/** +// holds synthetic mock trees that intentionally don't materialize every file +// they reference, and cli/aidd_docs/tasks/** is a historical record whose +// @path references and inline rewrite-rule examples are expected to drift as +// the codebase evolves after the fact. +const DEFAULT_IGNORES = ["cli/tests/fixtures", "cli/aidd_docs/tasks"]; const MARKDOWN_EXTENSIONS = new Set([".md", ".mdx"]); function normalizePathForDisplay(filePath) { const relative = path.relative(ROOT, filePath).replaceAll(path.sep, "/"); @@ -424,7 +432,7 @@ function runCli(argv = process.argv.slice(2)) { } try { - const { files, problems } = checkMarkdownLinks(parsed.paths, parsed.ignores); + const { files, problems } = checkMarkdownLinks(parsed.paths, [...DEFAULT_IGNORES, ...parsed.ignores]); reportProblems(problems, files.length); return problems.length === 0 ? 0 : 1; } catch (error) {