Authoring

Documentation Model Types

Neenja parses recognized project files into a typed document collection that powers routing, navigation, search, and rendering.

typesschemamodelrenderer

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.

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.

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 as Kind, Signature, Parameters, Definition, or Fields.
  • value: string - Inline text stored on the same line as the field label.
  • items: string[] - List items collected under that field.

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.

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 as Architecture, Runtime, Data Contracts, or Quality.
  • 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.

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.

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 as Frontend, Backend, Quality, or Docs.
  • 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 nested children.
  • blockingTaskIds: string[] - Task IDs that depend on this task.
  • depth: number - Derived nesting depth in the decomposition tree.
  • contentBlocks: ConceptContentBlock[] - Markdown body content.

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.

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 is done.
  • percent: number - Rounded completion percentage.

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.

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.

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.

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.

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;