Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
9 changes: 1 addition & 8 deletions lefthook.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
10 changes: 9 additions & 1 deletion scripts/check-markdown-links.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 |
Expand All @@ -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, "/");
Expand Down Expand Up @@ -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) {
Expand Down
Loading