Files
dotfiles/.config/opencode/commands/init.md
2026-03-08 14:37:55 +00:00

5.1 KiB

description
description
Initialize or update a project with scaffold, docs, and knowledge graph — adapts to both new and existing projects.

You are initializing or updating a project. Follow these steps in order.

Project hint (may be empty): $ARGUMENTS

Step 1 — Explore current project state (delegate to explorer)

Delegate to the explorer subagent first, before any questions, to determine whether this is a new or existing project.

  • Ask explorer to inspect the working tree for project-defining artifacts, including:
    • source files and source directories
    • README.md, AGENTS.md, docs/
    • stack markers such as package.json, pyproject.toml, go.mod, Cargo.toml, composer.json
    • git markers such as .git/
    • any similar files that strongly indicate an existing project
  • Ask explorer to return:
    • classification: new_project or existing_project
    • inferred project name, purpose, and tech stack (with confidence)
    • which required scaffold files already exist vs are missing
    • whether .git/ exists

Step 2 — Clarify (Lead, one round max)

Use the question tool for at most one round, adapting to Step 1 findings.

  • If explorer's classification confidence is low (e.g., directory has only a few ambiguous files), include the classification itself as a question to confirm.
  • If classification is existing_project:
    • confirm or correct explorer inferences (name, one-sentence purpose, stack)
    • ask only for unknown or low-confidence fields
    • do not ask whether to initialize git if .git/ already exists
    • do not ask for files/details that are already present and clear
  • If classification is new_project:
    • ask:
      • project name and one-sentence purpose
      • primary language / framework / tech stack
      • whether to initialize a git repository

Step 3 — Scaffold (delegate to coder)

Delegate to the coder subagent with explicit mode (new_project or existing_project) and the file existence map from Step 1.

  • Required scaffold targets:
    • README.md — title, purpose, tech stack, quick-start, project structure overview
    • AGENTS.md — project-specific workflow notes (code style, test commands, linting, build commands, commit conventions); do not duplicate global AGENTS.md policies — only add project-specific details
    • docs/architecture.md — stub with title + purpose
    • .gitignore — must include .megamemory/ entry; add stack-appropriate ignores (e.g., node_modules/, __pycache__/, target/)
    • other stack-specific scaffold files if clearly implied (e.g., package.json, pyproject.toml)
  • If new_project:
    • create all required scaffold files/directories
  • If existing_project:
    • create or fill in only missing pieces
    • do not overwrite existing files
    • explicitly instruct coder to check existence before creating each target
    • if .gitignore exists, instruct coder to append .megamemory/ if not already present
    • examples:
      • if README.md exists and AGENTS.md is missing, create only AGENTS.md
      • if docs/ is missing, create it and add docs/architecture.md

Step 4 — Documentation review (delegate to librarian)

Always delegate to the librarian subagent, for both new and existing projects.

  • Ensure README.md is accurate and complete for the current project state.
  • Ensure AGENTS.md captures project-specific workflow decisions from Step 2.
  • Ensure stubs are explicitly marked for later completion.
  • Keep edits additive and non-destructive for existing projects.

Step 5 — Initialize or update knowledge graph (Lead)

Always update megamemory for this project.

  • First call megamemory:understand to check whether a project root concept already exists.
  • If an appropriate concept exists, call megamemory:update_concept.
  • If none exists, call megamemory:create_concept with:
    • Kind: module
    • Name: <project name>
    • Summary: purpose, stack, key files, and notable init/update decisions
    • File refs: include whichever exist among README.md, AGENTS.md, docs/architecture.md
  • Create links (megamemory:link) from this concept to related existing concepts when applicable. If no related concepts exist yet (brand new knowledge graph), skip linking.

Step 6 — Git handling (delegate to coder)

Delegate git operations to coder based on discovered state.

  • If .git/ already exists:
    • skip git init
    • ensure .megamemory/ is in .gitignore (if not already handled in Step 3)
    • stage only newly created or modified files from this init/update flow
    • create a commit
  • If .git/ does not exist:
    • use Step 2 answer to decide whether to run git init
    • if initialized, ensure .megamemory/ is in .gitignore, then stage only newly created or modified files and create a commit
  • Commit message should be concise and conventional, e.g.:
    • chore: initialize project scaffold (new project)
    • chore: add missing project scaffolding (existing project)

Completion report

Summarize:

  • Files created and files updated, with purpose.
  • Decisions made and decisions deferred.
  • What the user should fill in next (stubs, open questions, follow-up documentation).