Thirteen-task TDD plan walking from vendoring the workspace wasm package
through scaffolding the extractor and adding extraction logic in
test-first slices: functions, classes, constructors, mixins, extensions,
enums, imports, exports, visibility, and call graph.
Every code block reflects AST shapes confirmed via a live probe against
a freshly-built tree-sitter-dart wasm in the project's own
web-tree-sitter at 0.26.x. No placeholder code, no "fill in later"
references.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Live verification during planning surfaced two facts that change the
shipping strategy:
1. tree-sitter-dart@1.0.0's prebuilt wasm uses the pre-`dylink.0` format
and fails to load in web-tree-sitter@0.26.x (the version this project
uses). Verified by directly loading the upstream wasm and catching
the failure in getDylinkMetadata.
2. The grammar source itself is sound — rebuilding with the current
tree-sitter-cli@0.26.x + wasi-sdk-29 toolchain produces a working
dylink.0-format wasm that parses every construct the extractor needs.
Revised packaging: ship the freshly-built wasm as a workspace-internal
package (@understand-anything/tree-sitter-dart-wasm) rather than
depending on the broken upstream npm artifact. No loader changes
required; existing TreeSitterPlugin resolves it the same way it
resolves other tree-sitter packages.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds the brainstormed design for landing deep Dart support at parity with
the recent Kotlin add (PR #347): LanguageConfig + tree-sitter WASM grammar
(tree-sitter-dart@1.0.0, verified ships a prebuilt .wasm in its tarball) +
DartExtractor + ~22 vitest cases. Six file changes, no edits to shared
schemas/registries.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Task 2 implementation surfaced inconsistencies between the spec/plan
and the actual codebase:
- The real type exports are GraphNode / GraphEdge, not KnowledgeGraph*
- Folder grouping uses bucket count (folders + rooted) not just folder
count, with threshold < 2 instead of < 3
- Concentration threshold is > 70% (was > 60%) so 2/3 distributions
stay in folder mode
- Single-child suppression is gated by layer total ≥ 3 to avoid
emptying tiny layers
- Removed the "layer < 8 → flat" rule; the algorithm is now uniform
and small layers fall through naturally via single-child suppression
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Design doc for replacing dagre with ELK across structural views, plus
folder/community-based containers and lazy two-stage layout for the
layer-detail view to fix horizontal sprawl at 50+ nodes.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
User-configurable file exclusion using .gitignore syntax, with hardcoded
defaults, auto-generated starter file, and pre-analysis review pause.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Move all design docs to docs/superpowers/specs/ and all implementation
plans to docs/superpowers/plans/ for consistent organization.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
New skill that takes markdown knowledge bases (Obsidian, Logseq, Dendron, Foam,
Karpathy-style, Zettelkasten, plain) and produces interactive knowledge graphs
with typed nodes/edges, auto-format detection, and dashboard visualization.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>