-
Keep canonical docs in sync with every meaningful scope or architecture change:
docs/PLAN.mdfor milestone order, current focus, and the next implementation targetdocs/PRODUCT_SPEC.mdfor product-level behavior and invariants- GitHub Issues for dogfood findings and deferred polish work (
docs/FINDINGS.mdis a closed historical archive of pre-0.1.1findings) docs/RELEASE_STANDARD.mdfor the current0.1quality/completeness bardocs/specs/**for focused technical or feature specsdocs/worklists/**for detailed execution docs and todo listsdocs/CHANGELOG.logfor chronological project change notes
The following user-facing surfaces also need to stay in sync when product behavior or documented features change:
README.mdfor the user-facing project overview and entry-point linkssrc/site/**for the public project site content1.Start-Here.mdfor the packaged-install first-run guideReadMe.txtfor the plain-text pointer to1.Start-Here.md
-
Two doc venues are rollups:
docs/PLAN.mdrolls up the worklists indocs/worklists/**, anddocs/PRODUCT_SPEC.mdrolls up the detailed specs indocs/specs/**. Rollups summarize and link; detail docs are the source of truth for their scope. If a rollup and its detail doc disagree, the detail wins and the rollup gets re-summarized to match. -
Rule
1.1is the canonical map of where things live in this repo. When other docs reference a venue, prefer the role name (the changelog,a feature spec,GitHub Issues) over the hardcoded path. Link to a path only when the doc is genuinely pointing the reader at a file (cross-references, README navigation). This keeps venue moves a one-place edit instead of a repo-wide sweep. -
Maintain
docs/CHANGELOG.logas plain text in chronological order with new entries appended at the bottom. -
Changelog entries may be edited to fix mistakes in the entry itself; corrections to mistakes in product/code/docs behavior get new appended entries.
-
Specs come first: align on the requirement in the docs, implement, then update docs to match what actually shipped.
-
Docs are primarily internal engineering documents for future maintenance, not end-user documentation.
-
Keep
AGENTS.mdandCLAUDE.mdin sync — they are mirrors of each other for different agent runtimes (Codex readsAGENTS.md; Claude Code readsCLAUDE.md). Update both when rules change. -
When adding or editing rules, avoid overly restrictive or micromanaging wording. Prefer the minimum rule needed to protect the repo's actual workflow and quality bar.
-
During dogfooding, log issues as GitHub Issues instead of treating every observation as an immediate implementation task.
-
Open blockers live as GitHub Issues.
docs/PLAN.mdreferences which issues block which milestones; worklists hold execution context around those issues;docs/RELEASE_STANDARD.mddefines which categories count as release blockers. None restate issue content. -
When a venue's role changes or its location moves, sweep the repo for stale references and update them in the same change.
-
Run commands directly using available tools. Do not ask the user to open a terminal or run something the agent can run itself.
-
If the user is asking for input or feedback, answer first and confirm before making changes when the request is still decision-seeking.
-
If asked to implement code before a spec exists, recommend capturing the scope in docs first unless the user explicitly wants to skip that step.
-
If a new doc or spec materially shapes future implementation scope, pause for user review before treating that doc as approved direction.
-
Preserve unrelated local changes. Do not revert work you did not make.
-
Use path-scoped git staging and commits so unrelated work is never swept into a change by accident.
-
GitHub is used as the canonical remote, but tests stay local by default unless the user explicitly asks for hosted automation.
-
Branches for new work should follow
codex/<task>unless an existing branch/PR already owns the work. -
Keep README documentation links current when adding or renaming docs.
-
Do not add artificial numbering to a document's lone title heading.
-
If a document uses numbered headings, the first numbered heading at any tier starts at
1. -
Heading level choice should follow the document structure; numbering rules do not imply a required heading depth.
-
Avoid vague placeholder words such as
shapewhen a more concrete term would say what is actually meant. Prefer specific terms likelayout,structure,contents,plan,scope,behavior, or another word that names the real thing directly. -
Keep substantial drafts such as release-note bodies, announcement copy, or long procedures in their own docs and have worklists reference them instead of embedding them inline.
- Use
docs/worklists/for worklists: execution docs and todo lists. docs/PLAN.mdremains the high-level execution document:- milestone order
- milestone timing
- current focus
- short milestone summaries only
- Worklists hold the detailed execution layer that does not belong in
docs/PLAN.md. - A worklist may include:
- task breakdown
- sequencing
- verification checklist
- blockers
- partial completion notes
- handoff notes
- When worklist items are actionable tasks or verification points, use numbered checkboxes so they can carry both status and referenceability.
- Default to worklist order execution except for parallel work or explicit user requests.
- Worklists must not replace specs.
- Specs define requirements, scope, constraints, and acceptance criteria.
- Plans define milestone-level schedule and focus.
- Changelog records what already happened.
- A worklist may target:
- one whole milestone
- one clearly bounded portion of one milestone when that milestone is large enough to justify separate execution tracking
- A worklist must never span multiple milestones.
- In
docs/worklists/**, purely descriptive headings may stay unnumbered; numbered headings should reflect only the actionable section sequence. - Each worklist should include the milestone timing it mirrors from
docs/PLAN.md, whiledocs/PLAN.mdremains the canonical schedule source.
- Use TDD where it materially reduces ambiguity:
- auth/session logic
- workspace/tab state transitions
- protocol parsing and validation
- key-mapping and mobile modifier logic
- small persistence/state helpers
- Use spike-first, then add tests for:
- terminal process integration
- browser terminal wiring
- reconnect behavior
- mobile ergonomics and interaction polish
- Run local verification before closing work:
npm run typechecknpm test- any task-specific manual browser checks documented in the relevant spec or README
- Treat the browser UI as the session of record for both desktop and remote access.
- Do not add a separate native-terminal control path unless the user explicitly changes scope.
- Target Windows hosts first and prefer ConPTY-capable integrations.
- Prefer
pwshwhen available, but keep runtime fallback support for Windows PowerShell so the repo stays usable on machines without PowerShell 7 installed. - Keep the default security posture local/private: no direct public internet assumptions without explicit scope change.
- Persist only lightweight session metadata in v1; do not claim session resurrection that does not actually exist.
- Mobile terminal controls are part of the core product, not a stretch goal. Preserve usable access to modifiers and navigation keys whenever the terminal UI changes.
- Use subagents only for path-scoped, non-overlapping work that clearly reduces cycle time.
- Keep the critical path with the primary agent: architecture, integration, final verification, and the user-facing summary stay local.
- Assign concrete ownership when delegating. Avoid overlapping write scopes.
- Expect dirty working trees. Stop only when unexpected changes collide with the exact files you need to edit.
- Leave a short handoff note in the final summary when work is paused or partially complete.
npm install
npm run dev
npm run typecheck
npm test
npm run build- The default local URL is
http://127.0.0.1:22443. - Runtime configuration lives in
.env; start from.env.example. - Local state belongs under
.termiweb/and must stay untracked. - Local marketing scratch files and other dev-environment-specific material belong under
.cybercreek/and must stay untracked. - This project currently assumes a Windows host. If cross-platform support is introduced, update the specs and AGENTS guidance together.