1. Purpose
This document is the definitive specification for the uvilo-os repository — the single source
of truth for Uvilo as a company. It covers repository structure, naming conventions, project
folder layout, editing workflow, branching model, infrastructure, and the agentic execution
system that allows AI agents to autonomously implement projects across multiple sessions.
This spec was derived from the Requirements and Research documents in this folder.
2. What Uvilo OS Is
uvilo-os is the corporate operating system of Uvilo. It contains:
- Company vision, mission, values, and strategy
- Product architecture, specs, prompts, and outputs
- Process documentation and automation scripts
- Skills used by AI agents to perform work
- Operational learnings accumulated over time
- The assistant infrastructure used to manage and evolve all of the above
It is designed to be readable and editable by humans and AI agents alike, version-controlled via Git, and publishable as one or more websites. AI agents can autonomously implement large projects across multiple sessions, with each session picking up where the last left off.
3. Repository Name and Location
- Repository name:
uvilo-os - GitHub organization: Uvilo
- Local working root:
uvilo-os/(currently synced via Google Drive) - Canonical branch:
dev(in the short term)
4. Top-Level Structure
Each top-level folder is a department. Departments contain projects inside Department/Projects/. Projects are the unit of work.
5. Naming Conventions
General rule
All folder and file names use Title_Case_With_Underscores — each word capitalized, joined
by underscores (e.g. Onboarding_Quiz_Spec.md, Extract_Persistent_Memory_Prompt.md).
Ampersands and other punctuation are preserved as-is (e.g. Process_&_Docs_System).
Document titles (in frontmatter title: and # H1) use normal spaces and capitalization —
the filename and title do not need to match exactly.
Project-name prefix
All documents at a project’s root level are prefixed with the project name:
{Project_Name}_{Document_Type}.md (e.g. Onboarding_Quiz_Spec.md, Taxonomy_Research.md).
This ensures files are identifiable when open alongside files from other projects.
Exceptions
| File type | Convention | Example |
|---|---|---|
Scripts (.ts or .sh written for this repo) | lowercase_with_underscores | generate-toc.ts, release.sh |
Schemas (Zod v3, .ts) | PascalCase + Schema suffix | OnboardingQuizSchema.ts, AnalyzeLifeDomainQuizSchema.ts |
Codebase .ts files (non-schema, copied from app source) | PascalCase preserved | UploadQuizSchema.ts |
SKILL.md | Always uppercase filename | SKILL.md |
.pdf / .docx | Natural names, spaces preserved | The Uvilo Method.pdf |
Project_Name_History.md | Project prefix + _History | Uvilo_OS_History.md |
Project_Name_WIP.md | Project prefix + _WIP | Uvilo_OS_WIP.md |
6. Project Folder Structure
Every project follows this standard layout. Subfolders and optional files are created only when needed — not by default:
Document progression
Projects follow a natural document progression:
- Requirements — written first; defines scope, constraints, success criteria
- Research — pre-spec document; evaluates options, records rejected approaches with references, justifies the chosen solution; keeps the Spec free of abandoned ideas
- Spec — clean definitive design derived from Research; the reference during execution
- Plan — implementation plan derived from a Spec; breaks the Spec into actionable tasks with ordering and dependencies. A Spec may have one or more Plans. Plans drive the State document’s task lists. Simple projects where the Spec is small enough to execute directly may skip Plans entirely.
Not every project needs all four. Simple projects may start directly at Spec. The progression exists to capture reasoning, not to create paperwork.
Project state files
Each project maintains up to three files for cross-session continuity. These allow any agent to resume work from any prior session without reading the full conversation history.
Project_Name_State.md — Primary state document
The State document is a living markdown file that tracks project progress. It is the primary source of truth for what has been done and what remains. Both humans and agents read and update it.
Structure:
Todo item conventions:
| Checkbox | Prefix | Meaning |
|---|---|---|
- [ ] | (none) | Not started |
- [ ] [STARTED] | [STARTED] | In progress — an agent has begun work on this |
- [x] | (none) | Done |
- [ ] [BLOCKED] | [BLOCKED] | Waiting on a dependency or external input |
The prefix tags [STARTED] and [BLOCKED] appear immediately after the checkbox, before
the task title. When a started task is completed, remove the [STARTED] prefix and check
the box. Sub-items use standard markdown nesting (2-space indent).
Project_Name_History.md — Cross-session memory
A compressed summary of each completed session, written by the agent at the end of each session (or by the crash-recovery process). Provides context for the next agent without requiring it to read the full working log.
Project_Name_WIP.md — Running scratchpad
A detailed operational log written during a session — file paths edited, commands run, errors encountered, decisions made. This is the raw material from which the session summary is distilled. It gets long and messy, and that is expected. Its primary purpose is crash recovery: if a session is interrupted, the next agent can see exactly where things were left.
The working log is cleared or archived at the start of each new session.
Output folder
The Output/ folder holds artifacts produced by the project — generated files, published
documents, analysis results. Output files use descriptive names; versioning is handled by Git.
7. Skills
Where skills live
Skills are co-located with the project they serve:
Skills that are genuinely cross-project (e.g. general markdown
processing) live in Forge/Skills/.
Cross-project skills
| Skill | Location | Purpose |
|---|---|---|
Create_New_Version | Forge/Skills/Create_New_Version/SKILL.md | Cut a new version of a versioned project — archives current files and increments version in frontmatter |
What a SKILL.md contains
SKILL.md files are thin pointers, not self-contained knowledge bases. A skill tells an agent where to find the information it needs — it does not duplicate it:
Skills are LLM-agnostic. They contain no Claude-specific syntax or assumptions.
8. Lessons
Where lessons live
Operational learnings are co-located with the project they belong to, in Lessons.md:
Cross-project lessons (tool behavior, general workflow discoveries) live in
Forge/Lessons.md.
What belongs in Lessons.md
- Workarounds discovered through trial and error
- Correct syntax or commands found after failures
- Tool behavior that differs from expectations
- Corrections from the user that change how work is done
What does not belong:
- Obvious or standard behavior
- Information already captured in the Spec
- Raw debug logs
9. Document Frontmatter
All markdown documents include YAML frontmatter:
| Field | Values | Purpose |
|---|---|---|
title | String | Human-readable title; used in site navigation |
visibility | internal / public | Controls which published site includes this doc |
status | draft / review / approved | Tracks maturity; does not affect publishing |
owner | email | Accountable person for this document |
tags | Array | Used for filtering and search |
last_reviewed | ISO date | When the content was last verified as current |
version | Integer | Optional. Only used for projects with explicit versioned releases (e.g. published methodology, API schemas, quiz formats consumed by external systems). Omit entirely for projects that do not version. |
10. The Assistant Folder
Forge/ contains the infrastructure for AI agents operating on uvilo-os. It is
self-contained and does not duplicate content from other folders.
The agent operating instructions are documented in Forge/instructions.md.
11. Editing Workflow
All editing — by humans and AI agents — happens through browser-based interfaces hosted on Railway. No local (on the user’s machine) tooling, Git clients, or filesystem access is required.
Editing surfaces
| Surface | Use case |
|---|---|
| LibreChat | AI-driven editing, generation, iterative refinement, autonomous project execution |
| TinaCMS (local mode) | Manual WYSIWYG edits, review, small corrections |
Both surfaces read and write to the same per-user working directory on Railway. A user can switch between them freely within a session.
Session workflow
- Start session — LibreChat creates a branch (e.g.
work/erik/taxonomy-spec-2026-03-07) and ensures the working directory is current (git pull) - Edit freely — via LibreChat chat, or TinaCMS browser UI; files may be incomplete or inconsistent mid-session; no commits happen automatically
- End session — user tells LibreChat to commit; LibreChat runs
git commit, pushes the branch, and opens a draft Pull Request againstmain - Review and merge — PR is reviewed (via GitHub UI or LibreChat); merged when approved;
mainis updated; CI rebuilds published sites
Branch naming
| Scenario | Pattern | Description |
|---|---|---|
| Working session | work/<user>/<topic>-<date> | A human-led session (with or without AI assistance) |
| AI agent task | agent/<task>-<date> | An autonomous agent run initiated programmatically |
| Hotfix / small edit | fix/<user>/<topic> | Small targeted correction outside a full working session |
Neither agents nor humans ever commit directly to main.
Stale branches (no activity for 30 days) are deleted automatically via GitHub Actions.
12. Agentic Execution System
The agentic execution system — architecture, session workflow, crash recovery, human-in-the-loop mode, and model flexibility — is now maintained as its own project.
→ See Agentic Execution Spec for the full specification.
13. Infrastructure
| Component | Role |
|---|---|
GitHub (uvilo-os repo) | Canonical source of truth; version history |
| Vercel | Hosts the internal documentation site; preview deployments from dev branch |
| Railway persistent volumes | Per-user working directories (Git clones) for LibreChat |
| MCP servers | Filesystem + Git access for LibreChat editing |
| LibreChat Agents API | Programmatic interface for the orchestrator to invoke agents |
| Orchestrator | Python script on Railway that chains agent sessions across projects |
| GitHub Actions | CI/CD: builds site on merge to main; stale branch cleanup |
| Astro Starlight | Generates the documentation site (in .internal/ subfolder) |
| Pagefind | Client-side full-text search (ships with Starlight) |
| Typesense (future) | Server-side semantic search for AI RAG |
Published site
The internal documentation site is built from the repository using Astro Starlight and deployed to Vercel. Access is restricted to Uvilo team members via Vercel Authentication.
- Internal site — all documents; deployed to Vercel behind Vercel Authentication
- Custom domain:
os.uvilo.com(points todevbranch preview deployments) - Starlight project:
.internal/subfolder (hidden from repo root) - Starlight plugins:
- starlight-theme-nova — modern theme with custom colors and fonts
- starlight-giscus — GitHub Discussions comments on every page
- starlight-llms-txt — generates
/llms.txt,/llms-full.txt,/llms-small.txt - starlight-auto-sidebar — sidebar group customization
- astro-mermaid — mermaid diagram rendering in markdown code blocks
- astro-vtbot/viewTransitions — browser-native cross-document view transitions
- Custom markdown plugins (
.internal/src/plugins/):- remark-resolve-relative-links.mjs — rewrites relative
.mdlinks to Starlight route URLs - rehype-external-links.mjs — adds
target="_blank" rel="noopener noreferrer"to external links
- remark-resolve-relative-links.mjs — rewrites relative
- Dependency pinning: All dependencies in
package.jsonuse exact versions (no^or~ranges) - Custom component overrides:
Pagination.astro— composes giscus Comments + Nova Pagination - Public site — postponed until content is ready for external visibility
14. GitHub Repository
- URL:
https://github.com/ErikDakoda/uvilo-os(private) - Default branch:
main - Working branch:
dev— all daily work happens here; pushes trigger Vercel previews - Branch protection on
main: require PR, no direct pushes - Initial commit: 2026-03-07 — Uvilo OS restructure complete
GitHub is the source of truth. The Google Drive folder remains as a working copy synced via git.
The current workflow uses dev as the primary branch. main is dormant and will be
fast-forwarded to dev occasionally. When the team grows, main will become the
review/approval gate with PRs from dev.
15. Related Documents
- Requirements — what this system must do
- Research — options evaluated; approach selected; agentic execution research
- Infrastructure Plan — Railway deployment, MCP servers, volume setup
- State — living progress tracker