Authoring
Documentation Model Types
Neenja parses recognized project files into a typed document collection that powers routing, navigation, search, and rendering.
These are the main structured values used by the parser and reader.
object
DocumentMeta
{ title: string; project: string; version: string; updated: string; summary: string; preferences?: string }
Metadata exposed by documentation and task-tree documents.
- Fields
- title:
string- Rendered document title. - project:
string- Project name from frontmatter. - version:
string- Schema version marker stored in the file. - updated:
string- Last canonical document update date. - summary:
string- Short description shown in the reader shell; task trees receive a parser default because YAML task trees do not store summary. - preferences:
string | undefined- Optional single-line user preferences stored by skills.
- title:
object
ProjectPlanMeta
{ title: string; project: string; version: string; updated: string; preferences?: string }
Frontmatter metadata exposed by project-plan documents.
- Fields
- title:
string- Rendered project-plan title. - project:
string- Project name from frontmatter. - version:
string- Schema version marker stored in the file. - updated:
string- Last canonical project-plan update date. - preferences:
string | undefined- Optional single-line user preferences stored by the planning skill.
- title:
union
DocumentKind
"documentation" | "project-plan" | "task-tree"
Filename-derived document type used by the reader.
union
DocumentationVisibility
"public" | "private"
Active visibility mode used for documentation concepts.
union
ConceptKind
"concept" | "functions" | "types"
Renderer mode for a documentation concept body.
object
FunctionField
{ label: string; value: string; items: string[] }
Structured field captured from function or type blocks.
- Fields
- label:
string- Original field name such asKind,Signature,Parameters,Definition, orFields. - value:
string- Inline text stored on the same line as the field label. - items:
string[]- List items collected under that field.
- label:
object
Concept
Parsed documentation concept with metadata, Markdown content, and optional structured entries.
- Fields
- id:
string- Stable machine-readable concept ID. - title:
string- Human-readable concept title. - category:
string- Sidebar category name. - categorySlug:
string- Normalized category key used by the UI. - privacy:
ConceptPrivacy- Visibility metadata for filtering. - kind:
ConceptKind- Concept renderer mode. - tags:
string[]- Searchable tag list. - summary:
string- Short description used in cards and search. - related:
string[]- Related concept IDs. - contentBlocks:
ConceptContentBlock[]- Markdown content rendered before structured entries. - functions:
ConceptFunction[]- Function entries owned by the concept. - types:
ConceptType[]- Type entries owned by the concept.
- id:
object
PlanSection
Parsed ## Plan: section from .neenja/project-plan.md.
- Fields
- id:
string- Stable machine-readable section ID. - title:
string- Human-readable section title. - area:
string- Sidebar group such asArchitecture,Runtime,Data Contracts, orQuality. - areaSlug:
string- Normalized area key used by the UI. - summary:
string- Optional section summary rendered below the section title and included in search. - contentBlocks:
ConceptContentBlock[]- Free-form Markdown before the first plan detail block. - detailBlocks:
PlanDetailBlock[]- Parsed###technical detail blocks owned by the section.
- id:
object
PlanDetailBlock
Parsed ### technical detail block inside a project-plan section.
- Fields
- id:
string- Generated stable-enough block ID derived from the heading and uniqued within the section. - title:
string- Human-readable detail block title. - contentBlocks:
ConceptContentBlock[]- Markdown body content for the detail block.
- id:
object
TaskNode
Parsed task entry from .neenja/task-tree.yaml.
- Fields
- id:
string- Stable machine-readable task ID. - title:
string- Human-readable task title. - status:
string- Normalized status slug. - statusLabel:
string- Human-readable status label. - statusSlug:
string- CSS-safe status key used by the reader. - area:
string- Sidebar group such asFrontend,Backend,Quality, orDocs. - areaSlug:
string- Normalized area key used by the UI. - parentId:
string | undefined- Derived parent task ID from YAML nesting. - dependsOn:
string[]- Task IDs that must be completed or unblocked first. - childrenIds:
string[]- Child task IDs derived from nestedchildren. - blockingTaskIds:
string[]- Task IDs that depend on this task. - depth:
number- Derived nesting depth in the decomposition tree. - contentBlocks:
ConceptContentBlock[]- Markdown body content.
- id:
object
TaskGraphEdge
{ from: string; to: string; kind: "decomposition" | "dependency" }
Derived graph edge between task IDs.
- Fields
- from:
string- Source task ID. - to:
string- Target task ID. - kind:
"decomposition" | "dependency"- Edge meaning.
- from:
object
TaskProgressSummary
{ total: number; done: number; percent: number }
Completion metrics calculated from task statuses.
- Fields
- total:
number- Number of parsed tasks. - done:
number- Number of tasks whose normalized status isdone. - percent:
number- Rounded completion percentage.
- total:
object
TaskStatusSummary
{ status: string; label: string; count: number; percent: number }
Status bucket used by the task tree progress UI.
- Fields
- status:
string- Normalized status slug. - label:
string- Human-readable status label. - count:
number- Number of tasks in this status. - percent:
number- Rounded share of all tasks.
- status:
object
DocumentationDocument
Parsed documentation payload consumed by the reader shell.
- Fields
- kind:
"documentation"- Document discriminator. - slug:
"documentation"- Route segment for documentation pages. - label:
string- Navbar label. - meta:
DocumentMeta- Frontmatter metadata. - visibility:
DocumentationVisibility- Active visibility mode for this run. - concepts:
Concept[]- Visible concepts after privacy filtering. - categories:
CategoryGroup[]- Visible concepts grouped for navigation. - conceptsById:
Record<string, Concept>- Visible concepts keyed by ID. - typeIndex:
Record<string, TypeReferenceTarget>- Lookup table for inline type links.
- kind:
object
ProjectPlanDocument
Parsed project plan payload consumed by the reader shell.
- Fields
- kind:
"project-plan"- Document discriminator. - slug:
"project-plan"- Route segment for project plan pages. - label:
string- Navbar label. - meta:
ProjectPlanMeta- Frontmatter metadata without summary. - sections:
PlanSection[]- Parsed technical plan sections, including summaries and detail blocks. - areas:
PlanAreaGroup[]- Sections grouped for sidebar navigation. - sectionsById:
Record<string, PlanSection>- Plan sections keyed by ID.
- kind:
object
TaskTreeDocument
Parsed task tree payload consumed by the reader shell.
- Fields
- kind:
"task-tree"- Document discriminator. - slug:
"task-tree"- Route segment for task tree pages. - label:
string- Navbar label. - meta:
DocumentMeta- Frontmatter metadata. - tasks:
TaskNode[]- Parsed tasks in document order. - areas:
TaskAreaGroup[]- Tasks grouped for sidebar navigation. - tasksById:
Record<string, TaskNode>- Tasks keyed by ID. - rootTaskIds:
string[]- Root task IDs used to render the decomposition graph. - edges:
TaskGraphEdge[]- Parent and dependency edges in the task graph. - statusSummary:
TaskStatusSummary[]- Task counts grouped by status. - progress:
TaskProgressSummary- Total, done count, and completion percentage.
- kind:
object
DocumentCollection
Full set of recognized documents loaded from a Neenja documents folder.
- Fields
documentation is preferred only when it has visible concepts, otherwise the project plan is preferred when present.
- visibility:
DocumentationVisibility- Active documentation visibility mode. - documents:
ReaderDocument[]- Recognized documents in navbar order. - documentsBySlug:
Record<string, ReaderDocument>- Documents keyed by route slug. - defaultDocument:
ReaderDocument- Document rendered at the root route;
- visibility: