🤔 How are people managing spec relationships as projects scale? #2371
Replies: 4 comments 4 replies
-
|
Archive extension would be one way of looking at it. Another way could be to write a spec that takes say the first 10 specs and creates documentation out of it and then deletes those specs themselves and you have Spec Kit work through that. Or create your own extension! Would love to hear what you decide to do and if you end up doing your own extension, preset or worfklow please do share! |
Beta Was this translation helpful? Give feedback.
-
|
Thank you for raising this topic & I'm interested as well... I think this is also an architecture issue ... |
Beta Was this translation helpful? Give feedback.
-
|
I’ve been thinking about a way to introduce more optional structure to support more complicated systems - what if we allowed the YAML frontmatter for specs to be a mini language where you can specify types, requirements, namespaces, interfaces, or other things? For example, you could describe the names of key components in your system and their requirements (similar to acai.sh), these could be DDD entities, APIs, UI page components, the sky is the limit on extensibility there; acai.sh could be realized as a subset of this functionality (if we also instructed the LLM to annotate code). And then in the actual markdown you could use natural language and diagrams, possibly referring to those things in the frontmatter (eliminating ambiguity). Would allow for a “continuum” of structure (could put more in the frontmatter if you want to be more rigorous), and allow us to re-use concepts from programming languages to handle more complicated systems that require name spacing, etc. (The markdown doc is like a sliding window, where the frontmatter at the top can be as large or as small as you want.) Perhaps we don’t go far in syntax checking of the frontmatter, or type checking, etc - though you could! We know that virtually anything can be represented with YAML (objects, arrays). So we’d have a lot of expressive power. How this would all play out with the other concepts, like plans, tasks, etc., I’m not sure. |
Beta Was this translation helpful? Give feedback.
-
|
Building a sibling tool (SPECLAN — a free VS Code extension for spec management, creator here), and I hit each of these the same way you described. Sharing what's actually working, less because the tool matters and more because the underlying patterns are what fixed it. The naming-drift one (Auth vs Authentication vs Login) goes away if the canonical identity isn't the title at all — it's an ID in frontmatter. We use branded IDs per entity type: ---
id: F-2419
type: Feature
parent: G-100
status: approved
---Titles can drift freely. Cross-references inside spec bodies cite the ID (e.g. "Depends on F-2419"), so renaming the feature title from "Auth" to "Authentication" doesn't break anything downstream. The renames you naturally do over a project's life stop being a maintenance event. To @charliejacobsen's point about frontmatter as a "mini language" — that's exactly the bet. We treat YAML frontmatter as the typed structure (id, type, parent, status, ac[]) and the Markdown body as the human prose. Validation runs over frontmatter. The body stays natural language + diagrams. Continuum of structure works in practice: you can be loose at the Goal layer and strict at the Requirement layer. Relationships — we lean on hierarchical containment first, explicit refs second. Goals contain Features (and sub-Features form a tree), Features contain Requirements. So a lot of "this depends on that" is just spatial: it sits in the same parent. For cross-tree dependencies we cite IDs in the body. We've toyed with explicit On the source-of-truth vs decision-history tension — we resolved this with a status lifecycle: For the Obsidian-style visualization — we render the tree inside the IDE itself (the spec hierarchy is the file structure, so a TreeView gets you most of the way), but the bigger win was generating a traceability matrix on demand instead of trying to maintain a graph artifact by hand. The hand-maintained graph approach (we tried it) was the first thing to drift. Happy to share the spec format if useful — docs are at https://speclan.net. Mostly though, the lesson I'd hand to anyone hitting this wall: anchor identity in frontmatter IDs, not titles, and make |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
I’ve been using spec-kit more heavily, and I’m starting to hit an issue as the number of specs grows:
It’s getting harder to keep specs connected and in sync as new features are introduced.
A few things I’m noticing:
Right now, spec generation works great—but maintaining relationships between specs feels much more manual- no matter to Human or Robot
Curious how others are handling this:
Context
I’ve been exploring ideas like:
But I’m not sure what the “right” pattern is yet.
Would love to hear how others are approaching this as their spec count grows.
Beta Was this translation helpful? Give feedback.
All reactions