All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
-
BREAKING: Renamed package from
@ai-coders/contextto@dotcontext/cli- CLI command changed from
ai-contexttodotcontext - MCP server name changed from
ai-contexttodotcontext - Why: The previous name caused frequent confusion with Context7 during
prompt-based installation and search. "context" is too generic in the
AI/LLM space. The new name "dotcontext" is unique, searchable, and
directly references the
.context/directory convention that is the core of this tool. - Migration: Replace
ai-contextwithdotcontextin your shell aliases and MCP configurations. Re-runnpx dotcontext mcp:installto update all tool integrations.
- CLI command changed from
-
BREAKING: Standalone CLI no longer generates context or plans
- Context creation, filling, and refresh are now MCP-only — your AI tool provides the LLM
- Plan initialization and management moved to MCP tools (
contextandplangateways) - The standalone CLI is now focused on workflow management, sync, reverse sync, imports, and MCP setup
- Migration: Run
npx dotcontext mcp:installand use your MCP-connected AI tool for context and plan operations
-
Themed Inquirer Prompts: Applied custom theme to all interactive prompts via new
themedPrompt.tswrappers (themedSelect,themedConfirm,themedInput,themedPassword,themedCheckbox), replacing raw inquirer calls with consistently styled interactions using the project's two-tone color scheme. -
"View Pending Files" Option: When the CLI detects unfilled scaffold files, users can now see which specific files need content before deciding to fill them.
-
Smart Defaults Transparency: The interactive flow now displays detected project information on startup (e.g., "Detected: TypeScript project, openrouter provider configured") instead of silently using auto-detected values.
-
API Key Format Validation: Lightweight format checks warn users when an API key doesn't match the expected prefix for a provider (e.g.,
sk-for OpenAI,sk-ant-for Anthropic). Non-blocking warnings only. -
"Back" Navigation in Prompt Flows: Added escape options in
promptAnalysisOptions()andpromptLLMConfig()so users can return to the previous menu instead of being forced through multi-step flows. -
Comprehensive .context Content: Rewrote all scaffolding files with project-specific content:
- 4 documentation guides (project-overview, development-workflow, testing-strategy, tooling)
- 7 agent playbooks with codebase-specific workflows and file references
- 10 skill files (repurposed api-design to MCP Tool Design)
- 3 QA guides (getting-started, project-structure, error-handling)
- 1 development plan (simplify-interactive-cli)
-
Skills System: Full skill scaffolding exported to
.claude/skills/,.gemini/skills/,.codex/skills/ -
Multi-tool Context Export: Context now syncs to Claude Code, Cursor, GitHub Copilot, Codex, Windsurf, and Gemini
-
Codex MCP Install Support:
mcp:installnow supports Codex CLI directly- Writes MCP configuration to
.codex/config.toml - Uses the documented
[mcp_servers.dotcontext]TOML configuration block - Brings Codex in line with other first-class MCP install targets
- Writes MCP configuration to
-
GitIgnore Integration in FileMapper: Automatic
.gitignorerespect prevents stack overflow in large repositories- New
GitIgnoreManagerclass with spec-compliant.gitignoreparsing viaignorenpm package - O(1) cached lookups with hierarchical
.gitignoreloading from repo root - Graceful fallback to existing hardcoded excludes when no
.gitignorefound - Integrated into
FileMapper.getRepoStructure()before glob scanning
- New
-
Path Traversal Protection for MCP Server: Security hardening for all file operations
- New
PathValidatorclass with null byte, URL-encoding, and traversal detection SecurityErrorclass with forensics metadata (attempted path, attack type)- Validates
filePath,rootPath, andcwdparams inwrapWithActionLogging()before tool execution
- New
-
Semantic Context Cache: In-memory caching for
SemanticContextBuilderoutput- TTL-based expiration (default 5 minutes) with directory mtime invalidation
- Per-repo and global invalidation methods
- Integrated into MCP
registerResources()context handler
-
CLI Modular Architecture: Extracted command groups from monolithic
index.ts- New
CLIDependenciesinterface for dependency injection - Skill commands (5 subcommands) extracted to
src/cli/commands/skillCommands.ts - Workflow commands (6 subcommands) extracted to
src/cli/commands/workflowCommands.ts index.tsreduced from 2818 to 2478 lines
- New
-
needsFill()false positives: Fixed bug whereneedsFill()matchedstatus: unfilledin document body content (e.g., code examples in agent playbooks) instead of only checking the YAML frontmatter block. The function now parses only the frontmatter between---delimiters. -
configSummaryi18n:displayConfigSummary()now uses the_t()translation function instead of hardcoded English labels ("Config:", "Options:", "Yes", "No"). -
Missing i18n key: Added
agent.type.skilltranslation key (en + pt-BR) that was referenced but undefined. -
Guide Consistency: Updated the user guide to match the real CLI surface
- Clarifies that quick sync still exists in the interactive CLI
- Removes the mismatch where Codex was described as an MCP install target before it was actually supported
-
Frontmatter-Safe Fill Pipeline: 100% preservation of YAML frontmatter during fill operations
needsFill()now reads 15 lines (was 3) to detectstatus:in v2 scaffold formatprocessTarget()andprocessTargetWithAgent()now preserve frontmatter withstatus: filledupdatecollectTargets()filters byneedsFill()with--forceoverride to prevent re-filling- Added
forceoption toFillCommandFlagsandResolvedFillOptions
- Path traversal attacks via
../, URL encoding (%2e%2e), and null bytes now blocked in MCP tool handlers - Audit logging for security events with forensics metadata
- Context generation 80-95% faster for unchanged files via semantic caching
- Eliminated stack overflow crashes in repositories with large unignored directories
src/utils/gitignoreManager.ts— GitIgnoreManager with hierarchical.gitignoreloadingsrc/utils/gitignoreManager.test.ts— 18 testssrc/utils/pathSecurity.ts— PathValidator with comprehensive sanitizationsrc/utils/pathSecurity.test.ts— 18 testssrc/services/semantic/contextCache.ts— In-memory TTL cache with mtime invalidationsrc/services/semantic/contextCache.test.ts— 13 testssrc/cli/types.ts— CLIDependencies interfacesrc/cli/commands/index.ts— Barrel exportsrc/cli/commands/skillCommands.ts— Extracted skill subcommandssrc/cli/commands/workflowCommands.ts— Extracted workflow subcommandssrc/tests/integrity/postRefactoringIntegrity.test.ts— 26 integration tests
src/utils/fileMapper.ts— GitIgnoreManager integrationsrc/utils/frontMatter.ts—needsFill()increased to 15 linessrc/services/fill/fillService.ts— Frontmatter preservation,forceoption,needsFillfilteringsrc/services/mcp/mcpServer.ts— PathValidator + ContextCache integrationsrc/index.ts— Replaced inline skill/workflow commands with modular importspackage.json— Addedignoredependency
- Irrelevant QA docs: Removed
api-endpoints.md(no REST API),deployment.md(npm package, not deployed service), andtesting.md(redundant withtesting-strategy.md).
Special thanks to @LorranHippolyte and @jeansassi for their massive contributions through pull requests.
- #31 - fix: exclude venv from semantic analysis
- Excludes
venv/and.venv/from semantic analysis by default to avoid noisy Python environment paths. - Persists user-defined
excludepatterns duringinit, sofillSingleuses project-specific exclusions. - Aligns semantic analysis to shared default exclude patterns for consistent behavior across tools.
- Excludes
- #23 - [Fix] Auto-fill files without LLMs
- Adds project-type-aware filtering so generated scaffolding better matches CLI, web, backend, and other stacks.
- Introduces static
defaultContentacross docs, agents, and skills, enabling usable output without LLM enhancement. - Replaces placeholder scaffold content with practical starter templates.
-
Project Type Filtering in InitService: Scaffolds are now automatically filtered based on detected project type
- Uses
StackDetectorandclassifyProjectto determine project type (cli, web-frontend, web-backend, full-stack, mobile, library, monorepo, desktop) - Passes
filteredDocsandfilteredAgentsto generators based on project classification - CLI projects get core scaffolds only; web projects get additional architecture, security, and specialist agents
- Graceful fallback to all scaffolds if classification fails
- Uses
-
Static Default Content for Scaffolds: All scaffolds now include useful template content out-of-the-box
- New
defaultContentfield inScaffoldSectiontype provides static content when not autoFilled - Serialization uses
defaultContentdirectly instead of placeholder text ("Content to be added.") - Works immediately without requiring LLM enhancement or semantic analysis
- New
-
Agent Playbook Default Content: All 14 agent playbooks now include comprehensive static content
- Mission — Clear description of agent purpose and when to engage
- Responsibilities — Concrete list of tasks the agent handles
- Best Practices — Guidelines for effective agent operation
- Collaboration Checklist — Step-by-step workflow with checkboxes
- Agents: code-reviewer, bug-fixer, feature-developer, refactoring-specialist, test-writer, documentation-writer, performance-optimizer, security-auditor, backend-specialist, frontend-specialist, architect-specialist, devops-specialist, database-specialist, mobile-specialist
-
Documentation Default Content: 8 core documentation templates now include useful starter content
- project-overview.md — Quick facts, entry points, technology stack, getting started checklist
- development-workflow.md — Branching model, local development commands, code review expectations
- testing-strategy.md — Test types, running tests, quality gates, troubleshooting
- architecture.md — System overview, layers, patterns table, diagrams placeholder
- tooling.md — Required tools, automation commands, IDE setup recommendations
- security.md — Authentication, secrets management, compliance checklist
- glossary.md — Type definitions, enums, core terms, acronyms table
- data-flow.md — Module dependencies, service layer, high-level flow diagram
-
Skill Default Content: All 10 built-in skills now include comprehensive static content
- When to Use — Clear activation triggers for each skill
- Instructions — Step-by-step execution guide
- Examples — Concrete, copy-pasteable examples
- Guidelines — Best practices for effective use
- Skills: commit-message, pr-review, code-review, test-generation, documentation, refactoring, bug-investigation, feature-breakdown, api-design, security-audit
- Scaffold Generation: Scaffolds now generate with useful content instead of empty placeholders
- Previously:
_Content to be added._with guidance comments - Now: Practical template content that works for any project type
- AutoFill still enhances with project-specific content when semantic analysis is available
- Previously:
- Exclude Python virtual environments from semantic analysis by default
- Added
venv/and.venv/to default exclude patterns - Unified
SemanticContextBuilderto use shared default exclude patterns - Persisted user-provided
excludepatterns frominitinto.context/config.jsonsofillSinglerespects them
- Added
src/services/init/initService.ts— Added project type detection and scaffold filteringsrc/generators/shared/structures/types.ts— AddeddefaultContentfield toScaffoldSectionsrc/generators/shared/structures/serialization.ts— Updated to usedefaultContentwhen availablesrc/generators/shared/structures/agents/factory.ts— AddedAgentDefaultContentinterface and section mappingsrc/generators/shared/structures/agents/definitions.ts— Added default content for all 14 agentssrc/generators/shared/structures/skills/factory.ts— AddedSkillDefaultContentinterface and section mappingsrc/generators/shared/structures/skills/definitions.ts— Added default content for all 10 skillssrc/generators/shared/structures/documentation/projectOverview.ts— Added default contentsrc/generators/shared/structures/documentation/workflow.ts— Added default contentsrc/generators/shared/structures/documentation/testing.ts— Added default contentsrc/generators/shared/structures/documentation/architecture.ts— Added default contentsrc/generators/shared/structures/documentation/tooling.ts— Added default contentsrc/generators/shared/structures/documentation/security.ts— Added default contentsrc/generators/shared/structures/documentation/glossary.ts— Added default contentsrc/generators/shared/structures/documentation/dataFlow.ts— Added default contentsrc/services/semantic/types.ts— Addedvenv/and.venv/to default exclude patternssrc/services/semantic/contextBuilder.ts— Uses shared default exclude patterns in semantic analysissrc/services/ai/tools/initializeContextTool.ts— Persists user exclude patterns in.context/config.jsonsrc/services/ai/tools/fillScaffoldingTool.ts— Applies persisted exclude patterns duringfillSingle
-
Interactive Mode Environment Prompt: Ask user before loading
.envfile in interactive mode- Prompts "Load environment variables from .env file?" at startup
- Default is No for explicit/secure approach
- Command-line mode still loads
.envautomatically (no change) - MCP mode continues to skip
.envloading (existing behavior)
-
MCP Install Command: New
mcp:installCLI command for easy MCP server configuration- Automatically configures ai-context MCP server in AI tools (Claude Code, Cursor, Windsurf, Cline, Continue.dev)
- Interactive mode with tool detection and selection
- Supports global (home directory) and local (project directory) installation
- Merges with existing MCP configurations without overwriting
- Dry-run mode for previewing changes
- Bilingual support (English and Portuguese)
-
Gateway Tools Consolidation: Unified MCP tools into 9 focused tools (5 gateways + 4 dedicated workflow tools)
explore- File and code exploration (read, list, analyze, search, getStructure)context- Context scaffolding and semantic context (check, init, fill, fillSingle, listToFill, getMap, buildSemantic, scaffoldPlan)plan- Plan management and execution tracking (link, getLinked, getDetails, getForPhase, updatePhase, recordDecision, updateStep, getStatus, syncMarkdown, commitPhase)agent- Agent orchestration and discovery (discover, getInfo, orchestrate, getSequence, getDocs, getPhaseDocs, listTypes)skill- Skill management (list, getContent, getForPhase, scaffold, export, fill)sync- Import/export synchronization (exportRules, exportDocs, exportAgents, exportContext, exportSkills, reverseSync, importDocs, importAgents, importSkills)workflow-init- Initialize PREVC workflow (creates .context/workflow/)workflow-status- Get current workflow statusworkflow-advance- Advance to next phaseworkflow-manage- Manage handoffs, collaboration, documents, gates- Standardized response utilities and shared context across all handlers
- Improved organization, discoverability, and reduced cognitive load
-
MCP Export Tools: New granular export tools for docs, agents, and skills
exportDocs- Export documentation from.context/docs/with README indexing modeexportAgents- Export agents from.context/agents/(symlink by default)exportContext- Unified export of docs, agents, and skills in one operation
-
MCP Import Tools: Individual import tools for each content type
importDocs- Import documentation from AI tool directories into.context/docs/importAgents- Import agents from AI tool directories into.context/agents/importSkills- Import skills from AI tool directories into.context/skills/
-
README Index Mode: New
indexModeoption for docs exportreadme(default) - Export only README.md files as indicesall- Export all matching files (previous behavior)- Cleaner exports that reference documentation indices
-
Content Type Registry: Extensible registry for future content types
ContentTypeRegistryinsrc/services/shared/contentTypeRegistry.ts- Supports docs, agents, skills, plans
- Easy addition of new content types (prompts, workflows, etc.)
-
Unified Context Export Service: Orchestrates export of all content types
ContextExportServicecombines docs, agents, and skills export- Configurable skip options for each content type
- Consistent error handling and reporting
-
MCP Response Optimization: New
skipContentGenerationoption forinitializeContext- Reduces response size from ~10k tokens to ~500 tokens
- Enables two-phase workflow: scaffold first, fill on-demand
- Default
truefor MCP to reduce context usage - Use
fillSingleFileorfillScaffoldingtools to generate content when needed
-
Workflow Gates System: Comprehensive gate checking for phase transitions
require_plangate - Enforces plan creation before P → R transitionrequire_approvalgate - Requires plan approval before R → E transition- Automatic gate settings based on project scale (QUICK, SMALL, MEDIUM, LARGE, ENTERPRISE)
- Custom error types for gate violations (
WorkflowGateError) - New
getGatesaction to check current gate status - Unit tests for gate checking logic
-
Workflow Autonomous Mode: Toggle autonomous execution for AI agents
setAutonomousaction to enable/disable autonomous mode- Autonomous mode bypasses certain gates for faster iteration
- Tracks reason for mode changes in workflow status
-
Execution History Tracking: Detailed action logging throughout workflow lifecycle
ExecutionHistorystructure tracks all workflow actions- Records phase starts, completions, plan linking, step execution
archive_previousoption for workflow initialization (archive vs delete existing)- Methods to archive or clear plans and workflows
-
Plan Execution Management: Step-level tracking and synchronization
updateStepaction for updating individual step statusgetStatusaction for retrieving plan execution statussyncMarkdownaction to sync tracking data back to plan markdown files- Detailed interfaces for step execution (
StepExecution) and phase tracking (PhaseExecution)
-
Git Integration for Plans: Commit completed phases directly from MCP
commitPhaseaction creates git commits for completed workflow phases- Optional co-authoring support with
coAuthorparameter - Configurable staging patterns with
stagePatterns(default:.context/**) - Dry-run mode for previewing commits
- Commit tracking records hash and timestamp for each phase
-
Breadcrumb Logging: Step-level execution trails for debugging
- Enhanced
PlanLinkerwith breadcrumb trail generation generateResumeContextprovides step-level context for session resumption- Actions tracked: step_started, step_completed, step_skipped
- Improves AI agent ability to resume interrupted workflows
- Enhanced
-
V2 Scaffold System: New scaffold generation architecture
- Frontmatter-only files that define structure without content
scaffoldStructurecontext passed to AI agents for content generation- Centralized scaffold structure definitions in
scaffoldStructures.ts - Supports documentation, agents, and skills scaffolding
- Improved validation and serialization of scaffold structures
- Deprecated legacy templates in favor of new system
-
Fill Tool Enhancements: Better context for content generation
fillSingleFileandfillScaffoldingexports from scaffolding tools now include scaffold structure context- Semantic context integrated into fill instructions
- Removed deprecated content generation functions
- Enhanced error handling and user guidance
-
Q&A Service: Question and answer generation from codebase (via MCP context gateway)
QAServicefor generating and searching Q&A entriesgenerateQAaction in context gateway creates Q&A files from codebase analysissearchQAaction for semantic search over generated Q&A- Utilizes pre-computed codebase maps when available
-
Topic & Pattern Detection: Automatic detection of functional patterns (via MCP context gateway)
TopicDetectoridentifies capabilities in codebase- Detects: authentication, database access, API endpoints, caching, messaging, etc.
detectPatternsandgetFlowactions provide pattern analysis- Used to generate contextually relevant Q&A and architectural insights
-
Context Metrics Service: Usage tracking for context tools (via MCP metrics gateway)
- Tracks context tool usage and file reads
- Provides insights into pre-computed context effectiveness
- Guides optimization of codebase map generation
- Accessible via
metricsgateway with tracking and reporting actions
-
Enhanced Tool Status: Improved response structures
- New
incompletestatus for tracking pending actions instructionfield with clear next-step guidancependingWritesreplacesrequiredActionsfor claritychecklistfield for actionable task lists
- New
-
Scaffold Enhancement Prompt: Consistent MCP enhancement instructions across all scaffolding operations
- New
MCP_SCAFFOLD_ENHANCEMENT_PROMPTconstant for standardized AI guidance - New
createScaffoldResponse()helper ensures all scaffold responses include enhancement instructions _actionRequired,_status: "incomplete", and_warningsignals for AI agent awarenessenhancementPromptfield with clear workflow stepsnextStepsarray with actionable instructionspendingEnhancementlist of files requiring content- Applied to:
context initandscaffoldPlanMCP actions - Ensures AI agents always receive instructions to enhance scaffolding via MCP tools
- New
-
Context Initialization Simplified:
.contextfolder creation now uses simple path logic instead of complex detection.contextis created in the specified path or current working directory- Cleaner, more predictable behavior without hidden traversal logic
- Internal complexity reduced from 496 lines to ~20 lines
- Public APIs remain unchanged - static factory methods (
WorkflowService.create(),PlanLinker.create()) are preserved - Backwards compatibility maintained for existing code
-
MCP Action Logging: Logs every MCP tool invocation to
.context/workflow/actions.jsonlwith sanitized metadata for auditability. -
Phase Orchestration Skills: Workflow responses now include recommended skills alongside agent orchestration for each PREVC phase.
-
Workflow Status Serialization: Omits empty or default sections to keep
status.yamlminimal and readable. -
Agents Export Default: Changed default sync mode from
markdowntosymlink- Symlinks keep AI tool directories automatically synchronized
- Changes in
.context/agents/reflect immediately in target directories
-
MCP Tool Simplification: Removed project-setup and project-report tools
- Simplified from 11 tools to 9 tools (5 gateways + 4 dedicated workflow tools)
- New explicit workflow:
context init→fillSingle→workflow-init - Project setup functionality now achieved through composable steps
- Removed
ProjectAction,ProjectParams,WorkflowAction,WorkflowParamstypes - Enhancement prompts no longer use function call syntax
- Tool descriptions clarify that workflow-init creates
.context/workflow/folder - Added MCP README.md documentation for simplified tool structure
-
MCP Server Architecture: Gateway pattern replaces individual tools
- Single entry point per domain (explore, context, workflow, etc.)
- Action-based dispatching within each gateway
- Consistent parameter validation and error handling
-
Scaffold Generation: Templates now generate structure, not content
- AI agents receive scaffold structure and fill based on context
- Better separation of structure definition and content generation
-
Workflow Initialization: New settings and options
autonomous,require_plan,require_approvalsettings- Scale-based default settings for different project sizes
archive_previouscontrols handling of existing workflows
-
ENTERPRISE Scale Removed
ProjectScale.ENTERPRISEenum value removed (breaking change for TypeScript code)- Consolidated into
ProjectScale.LARGEfor simpler mental model - Security/compliance keywords now map to LARGE scale instead of ENTERPRISE
- Backward compatibility: Existing
status.yamlfiles withscale: ENTERPRISEautomatically migrate to LARGE - API compatibility:
getScaleFromName('enterprise')maps to LARGE for smooth transitions - MCP interface:
workflow-initscale parameter no longer accepts 'ENTERPRISE'
-
Context Initialization
.contextis now created only in the specified path or current working directory
- Workflow Init Paths: Correctly resolves
.contextrepo paths to ensurestatus.yamlis created in the expected location. - Plan Index Initialization: Ensures
.context/workflow/plans.jsonis created when starting a workflow. - Export Validation: Export commands now properly check if source directories exist
exportContext,exportDocs,exportAgents,exportSkillsonly export content that actually exists in.context/- Added
fs.pathExistschecks before processing docs, agents, and skills directories - Skills export without
includeBuiltInno longer fails silently when.context/skills/doesn't exist - Prevents misleading success messages when exporting non-existent content
src/services/mcp/gateway/- Gateway handler modulesexplore.ts- File/code exploration handlercontext.ts- Context management handlerplan.ts- Plan management handleragent.ts- Agent orchestration handlerskill.ts- Skill management handlersync.ts- Sync operations handlerworkflowInit.ts- Workflow initialization handlerworkflowStatus.ts- Workflow status handlerworkflowAdvance.ts- Workflow advance handlerworkflowManage.ts- Workflow management handlershared.ts- Shared utilities and response helpers
src/services/mcp/README.md- MCP tools documentation and usage guidesrc/workflow/gates/gateChecker.ts- Gate checking logicsrc/workflow/gates/gateChecker.test.ts- Gate checker unit testssrc/workflow/errors.ts- Custom workflow error typessrc/generators/shared/scaffoldStructures.ts- Centralized scaffold definitionssrc/services/qa/qaService.ts- Q&A generation servicesrc/services/qa/topicDetector.ts- Functional pattern detectionsrc/utils/gitService.ts- Git operations utilitysrc/types/scaffoldFrontmatter.ts- Scaffold frontmatter typessrc/services/mcp/mcpInstallService.ts- MCP installation service for AI toolssrc/services/mcp/mcpInstallService.test.ts- Unit tests for MCP install servicesrc/services/export/contextExportService.ts- Unified export orchestratorsrc/services/shared/contentTypeRegistry.ts- Extensible content type definitionssrc/services/mcp/gateway/response.ts- Gateway response helpers and scaffold response buildersrc/services/mcp/gateway/types.ts- Gateway action types and parameterssrc/services/mcp/gateway/index.ts- Gateway module exportssrc/services/mcp/gateway/shared.ts- Shared utilities for gateway handlerssrc/services/mcp/gateway/metrics.ts- Context metrics tracking gateway
src/index.ts- Interactive mode environment prompt, conditional dotenv loadingsrc/utils/prompts/index.ts- AddedpromptLoadEnv()functionsrc/utils/i18n.ts- Addedprompts.env.loadEnvtranslations (EN/PT)src/services/mcp/mcpServer.ts- Gateway integration and new actionssrc/services/mcp/gateway/context.ts- Gateway implementation withinit,scaffoldPlanactions, Q&A and pattern detectionsrc/services/ai/tools/scaffoldPlanTool.ts- Added consistentstatus: "incomplete"pattern andnextStepguidancesrc/prompts/defaults.ts- AddedMCP_SCAFFOLD_ENHANCEMENT_PROMPTconstantsrc/workflow/orchestrator.ts- Gate checking and execution historysrc/workflow/status/statusManager.ts- Execution tracking and settingssrc/workflow/plans/planLinker.ts- Step tracking and commit supportsrc/services/ai/tools/fillScaffoldingTool.ts- Scaffold structure integration, exports bothfillScaffoldingToolandfillSingleFileToolsrc/services/ai/schemas.ts- New action schemas and parameterssrc/generators/documentation/documentationGenerator.ts- V2 scaffold supportsrc/generators/agents/agentGenerator.ts- V2 scaffold supportsrc/generators/skills/skillGenerator.ts- V2 scaffold supportsrc/index.ts- Addedmcp:installCLI command with interactive modesrc/services/mcp/index.ts- Exported MCPInstallServicesrc/utils/i18n.ts- Added translations for mcp:install command (EN + PT-BR)src/services/export/exportRulesService.ts- AddedindexModeoption and source path validationsrc/services/export/skillExportService.ts- Added skills directory existence checksrc/services/export/index.ts- Export ContextExportServicesrc/services/shared/index.ts- Export ContentTypeRegistry
-
Google Antigravity Support: Full bidirectional sync support for Google Antigravity
- Rules export to
.agent/rules/directory - Agents sync to
.agent/agents/directory - Workflows (skills) export to
.agent/workflows/directory - New
antigravitypreset for export and sync commands - MCP tools updated to include
antigravitypreset option
- Rules export to
-
Trae AI Support: Full bidirectional sync support for Trae AI
- Rules export to
.trae/rules/directory - Agents sync to
.trae/agents/directory - New
traepreset for export and sync commands - MCP tools updated to include
traepreset option
- Rules export to
-
Windsurf Directory Format: Changed Windsurf rules export from single file to directory format
- Now exports to
.windsurf/rules/as multiple markdown files - Aligns with Windsurf documentation (12,000 char limit per file)
- Now exports to
-
Reverse Quick Sync: Import rules, agents, and skills from AI tool directories into
.context/- Inverse of Quick Sync - consolidates scattered AI tool configurations into centralized
.context/ - New
reverse-syncCLI command with comprehensive options - Interactive mode with component selection and merge strategy prompts
- Supports 12 AI tools: Claude, Cursor, GitHub Copilot, Windsurf, Cline, Continue, Gemini, Codex, Aider, Zed, Antigravity, Trae
- Inverse of Quick Sync - consolidates scattered AI tool configurations into centralized
-
Tool Detection: High-level detection of which AI tools are present in a repository
ToolDetectorclass aggregates results from rules, agents, and skills detectors- Returns summary grouped by tool with file counts
- MCP tool:
detectAITools
-
Skills Detection: New detector for skills from AI tool directories
SkillsDetectorclass scans.claude/skills/,.gemini/skills/,.codex/skills/- Parses SKILL.md frontmatter for metadata (name, description, phases, tags)
- Follows existing AgentsDetector pattern
-
Import Skills Service: Import skills with merge strategy support
ImportSkillsServiceclass with four merge strategies: skip, overwrite, merge, rename- Adds frontmatter metadata to imported files (source_tool, source_path, imported_at)
- Preserves skill directory structure during import
-
Merge Strategies: Flexible conflict handling for imports
skip- Skip existing files (default)overwrite- Replace existing filesmerge- Append content with separatorrename- Create{name}-{tool}.mdfor conflicts
-
MCP Tools for Reverse Sync:
detectAITools- Detect AI tool configurations with summaryreverseQuickSync- Import from AI tool directories to.context/
-
CLI Command:
npx @ai-coders/context reverse-sync [options]--dry-run- Preview changes without importing--force- Overwrite existing files--skip-agents,--skip-skills,--skip-rules- Skip specific components--merge-strategy <strategy>- How to handle conflicts--no-metadata- Skip frontmatter metadata addition-v, --verbose- Verbose output
-
Interactive Menu: Added "Reverse Sync (import from AI tools)" option
- Component selection (rules, agents, skills)
- Merge strategy selection
- Detection summary display
-
i18n Support: Full English and Portuguese translations for reverse sync
src/services/reverseSync/types.ts- Types and interfacessrc/services/reverseSync/presets.ts- SKILL_SOURCES and tool mappingssrc/services/reverseSync/skillsDetector.ts- Skills detectionsrc/services/reverseSync/toolDetector.ts- High-level tool detectionsrc/services/reverseSync/importSkillsService.ts- Skills import servicesrc/services/reverseSync/reverseQuickSyncService.ts- Main orchestratorsrc/services/reverseSync/index.ts- Module exports
src/index.ts- Addedreverse-syncCLI command and interactive menu optionsrc/services/mcp/mcpServer.ts- AddeddetectAIToolsandreverseQuickSyncMCP toolssrc/utils/i18n.ts- Added reverse sync translations (EN/PT)
-
Auto-fill instructions for scaffolding: MCP scaffolding tools now return detailed fill instructions
initializeContextreturns semantic context and per-file fill instructions whenautoFill=true(default)scaffoldPlanreturns fill instructions for the plan template- AI agents receive comprehensive prompts to fill each generated file
- New
fillPromptfield with complete instructions for all files - New
fillInstructionsper file with specific guidance (architecture, data-flow, conventions, etc.)
-
Workflow file path visibility:
workflowInitandworkflowStatusnow return file pathsstatusFilePath: Absolute path to.context/workflow/status.yamlcontextPath: Path to the.contextdirectory- Helps AI agents and users locate workflow state files
-
New
autoFillparameter: Added toinitializeContextandscaffoldPlanMCP tools- Defaults to
true- scaffolding tools return semantic context and fill instructions - Set to
falseto skip context building and get template-only response
- Defaults to
- Scaffolding tool responses: Now include structured fill instructions instead of generic nextSteps
- Each generated file includes type-specific fill instructions
- Semantic context included for codebase-aware content generation
- Clear action directives for AI agents to fill files
- MCP
fillSkillsno longer requires API key: Fixed critical bug wherefillSkillsMCP tool incorrectly required an AI API key when called via Claude Code- MCP tools now return fill instructions instead of calling LLM services directly
- API keys are only required for CLI usage, never for MCP
- Design principle: AI agent (Claude Code) IS the LLM, so MCP tools return context/instructions
src/services/ai/schemas.ts- AddedautoFillparameter to input schemassrc/services/ai/tools/initializeContextTool.ts- Returns fill instructions and semantic contextsrc/services/ai/tools/scaffoldPlanTool.ts- Returns fill instructions for planssrc/services/ai/tools/fillScaffoldingTool.ts- Exported helper functions for reusesrc/services/ai/tools/index.ts- Updated exportssrc/services/mcp/mcpServer.ts- FixedfillSkillsto return fill instructions instead of calling SkillFillService, addedautoFillto tool schemas, file paths to workflow responses
-
Quick Sync Service: Unified synchronization of agents, skills, and documentation
- New
quick-synccommand for one-click export to all AI tools - Component selection: choose agents, skills, docs, or all
- Target selection: export to specific tools or all at once
- Selective doc targets: Choose which rules files to export (cursorrules, CLAUDE.md, AGENTS.md, windsurfrules, clinerules, CONVENTIONS.md)
- AGENTS.md universal export: New preset for tools that support universal agent files
- CLI:
npx @ai-coders/context quick-sync [--components agents,skills,docs] [--targets claude,cursor] - Interactive mode with per-component target selection (agents, skills, docs separately)
- New
-
getCodebaseMap MCP Tool: Retrieve structured codebase data
- Access pre-analyzed codebase information from
.context/docs/codebase-map.json - Sections:
stack,structure,architecture,symbols,publicAPI,dependencies,stats - Token-efficient retrieval with specific section queries
- Reduces need for repeated codebase analysis
- Access pre-analyzed codebase information from
-
Project Type Classification: Smart filtering for agents and documentation
- Automatic project type detection (backend, frontend, fullstack, api, library, cli, mobile)
- Filter agent playbooks based on project type
- Filter documentation templates based on relevance
scaffoldFilterservice for intelligent scaffolding selection
-
Interactive Mode Enhancements:
- Welcome screen with PREVC visual explanation
- User prompt input on startup
- Multi-select component options for scaffolding (docs, agents, skills)
- Target selection with presets for AI tools
-
Front Matter Wrapping: Enhanced options for generated files
- Additional front matter options:
wrap,template,source - Better metadata management for scaffolded files
- Additional front matter options:
-
Agent Front Matter Enhancement: Agent playbooks now include name and description
namefield auto-populated from agent titledescriptionfield auto-populated from first responsibility- Improves agent discovery and metadata for AI tools
-
Skills System: On-demand expertise for AI agents (Claude Code, Gemini CLI, Codex)
- 10 built-in skills: commit-message, pr-review, code-review, test-generation, documentation, refactoring, bug-investigation, feature-breakdown, api-design, security-audit
SkillRegistryclass for skill discovery and managementSkillGeneratorfor scaffolding SKILL.md filesSkillExportServicefor exporting to.claude/skills/,.gemini/skills/,.codex/skills/- CLI commands:
skill init,skill list,skill export,skill create,skill fill - MCP tools:
listSkills,getSkillContent,getSkillsForPhase,scaffoldSkills,exportSkills,fillSkills - Skills are mapped to PREVC phases for workflow integration
-
Skill Fill Feature: AI-powered skill personalization
skill fillCLI command personalizes skills with project-specific contentfillSkillsMCP tool for programmatic skill fillingSkillAgent- New AI agent for skill personalization (follows PlaybookAgent pattern)buildSkillContext()method in SemanticContextBuilder for skill-specific context- Uses docs and agents context for richer personalization
- Semantic analysis mode for token-efficient generation
- i18n support for English and Portuguese
-
Plan-Workflow Integration: Link plans to PREVC workflow phases
PlanLinkerclass for managing plan-workflow relationships- Plans now include PREVC phase mapping in frontmatter
- Track plan status, decisions, and risks per workflow phase
- MCP tools:
linkPlan,getLinkedPlans,getPlanDetails,getPlansForPhase,updatePlanPhase,recordDecision
-
Agent Lineup in Plans: Plans now include recommended agents in frontmatter
- AI agents can discover which agents to use for each plan step
AgentLineupEntrytype with phase mapping- Frontmatter parsing extracts agent lineup automatically
-
Custom Agent Discovery: Support for custom agent playbooks
- Discover agents from
.context/agents/directory - Support for both built-in and custom agents (e.g.,
marketing-agent.md) - MCP tools:
discoverAgents,getAgentInfo
- Discover agents from
-
Centralized Agent Registry: Single source of truth for agent management
AgentRegistryclass with caching and metadata retrievalBUILT_IN_AGENTSconstant with type-safe agent typesisBuiltInAgent()helper for validation- Exported from
workflow/agentsmodule
-
New MCP Tools for Plan Management:
linkPlan- Link a plan file to the current workflowgetLinkedPlans- Get all linked plans for current workflowgetPlanDetails- Get detailed information about a linked plangetPlansForPhase- Get plans relevant to a PREVC phaseupdatePlanPhase- Update plan phase statusrecordDecision- Record a decision for a plandiscoverAgents- Discover all available agents (built-in + custom)getAgentInfo- Get metadata for a specific agent
-
UI/UX Minimalist: Removed emoticons from all UI components
- Report service uses text indicators:
[x],[>],[ ],[-] - Menu choices use simple text without emoji prefixes
- Cleaner, more professional interface
- Report service uses text indicators:
-
PlanLinker Refactored: Now delegates agent operations to AgentRegistry (SRP)
-
Orphaned Spinners: Fixed CLI spinners not stopping properly in certain conditions
- Prevents visual artifacts when operations complete or fail
-
Skills Path Construction: Fixed Quick Sync creating incorrect folder paths for skills
- Now uses absolute paths consistent with agents sync behavior
- Skills correctly exported to
.claude/skills/,.gemini/skills/, etc.
src/services/quickSync/quickSyncService.ts- Quick Sync service for unified synchronizationsrc/services/quickSync/index.ts- Quick Sync module exportssrc/services/ai/tools/getCodebaseMapTool.ts- MCP tool for codebase map retrievalsrc/services/stack/projectTypeClassifier.ts- Project type classification servicesrc/services/stack/scaffoldFilter.ts- Intelligent scaffold filteringsrc/generators/documentation/codebaseMapGenerator.ts- Codebase map generationsrc/services/ai/agents/skillAgent.ts- AI agent for skill personalizationsrc/services/fill/skillFillService.ts- Service orchestrating skill fill operationssrc/workflow/plans/types.ts- Plan-workflow integration typessrc/workflow/plans/planLinker.ts- Plan-workflow linking servicesrc/workflow/plans/index.ts- Plans module exportssrc/workflow/agents/agentRegistry.ts- Centralized agent registrysrc/workflow/agents/index.ts- Agents module exports
src/services/semantic/contextBuilder.ts- AddedbuildSkillContext()methodsrc/services/ai/prompts/sharedPrompts.ts- AddedgetSkillAgentPrompt()src/services/ai/agentEvents.ts- Added 'skill' to AgentTypesrc/services/mcp/mcpServer.ts- AddedfillSkillsMCP toolsrc/utils/i18n.ts- Added skill fill translations (EN/PT)
// Plan Integration
export { PlanLinker, createPlanLinker, PlanReference, LinkedPlan, ... } from './plans';
// Agent Registry
export { BUILT_IN_AGENTS, AgentRegistry, createAgentRegistry, ... } from './agents';- Dotenv configuration handling: Updated dotenv configuration to respect command-line arguments
- MCP server now skips loading
.envfile when--skip-dotenvflag is passed - Prevents environment variable conflicts when running as MCP server
- Fix MCP to work in Antigravity and Codex
- MCP server now skips loading
-
Update command: New
updatecommand for selective documentation updates- Target specific files or sections without regenerating everything
- Supports
--filesflag to update specific documentation files - Preserves manual edits in other files
-
StateDetector service: Wizard-based project state detection
- Automatically detects scaffolding completeness (docs, agents, plans)
- Parses YAML front matter for instant status detection
- Provides actionable recommendations based on project state
-
YAML front matter utilities: Instant status detection for generated files
parseFrontMatter()- Extract metadata from markdown filesupdateFrontMatter()- Update metadata while preserving contenthasFrontMatter()- Quick check for front matter presence- Status tracking:
generated,filled,customized
-
Documentation guides: Extracted detailed guides from README
docs/GUIDE.md- Comprehensive usage guidedocs/MCP.md- MCP server setup and configurationdocs/PROVIDERS.md- Multi-provider configuration guide
-
New MCP tools for incremental scaffolding: Avoid output size limits
listFilesToFill- Returns only file paths (~1KB response) for efficient listingfillSingleFile- Process one scaffold file at a time (~10KB per file)- MCP server now exposes 12 tools (up from 10)
-
Tests for new utilities:
frontMatter.test.ts- 12 tests for YAML front matter parsing/updatingstateDetector.test.ts- 8 tests for project state detection
- Simplified README: Streamlined to essentials with links to detailed guides
- Interactive mode improvements:
- Menu reordered to prioritize plan creation over docs update
- Plan creation now asks for goal/summary instead of just name
- Quick setup fix: Uses correct
bothvalue instead ofallfor scaffold type - fillScaffolding pagination: Added
offsetandlimitparameters (default: 3 files)- Prevents output size errors for large projects
- Returns
pagination.hasMoreto indicate remaining files
- Centralized tool descriptions: Single source of truth for MCP and AI SDK
- New
toolRegistry.tswith all tool descriptions - MCP server uses
getToolDescription()instead of inline strings
- New
- Shared agent prompts: Eliminated redundancy across agents
- New
prompts/sharedPrompts.tswith common prompt components getDocumentationAgentPrompt(),getPlaybookAgentPrompt(),getPlanAgentPrompt()- Agents now import prompts instead of defining inline
- New
- Direct OpenRouter client: Removed
OpenRouterClientclass andOpenRouterConfigtype- OpenRouter is now used exclusively through AI SDK via OpenAI-compatible provider
- Simplifies provider architecture with single unified approach
src/services/state/stateDetector.ts- StateDetector servicesrc/services/state/stateDetector.test.ts- StateDetector testssrc/services/update/updateService.ts- Update command servicesrc/utils/frontMatter.ts- YAML front matter utilitiessrc/utils/frontMatter.test.ts- Front matter testssrc/services/ai/toolRegistry.ts- Centralized tool descriptionssrc/services/ai/prompts/sharedPrompts.ts- Shared agent system promptssrc/services/ai/prompts/index.ts- Prompts barrel exportdocs/GUIDE.md- Usage guidedocs/MCP.md- MCP documentationdocs/PROVIDERS.md- Provider configuration
src/services/openRouterClient.ts- Legacy direct OpenRouter client
-
MCP Server: New
mcpcommand for Claude Code integration via Model Context Protocol- Exposes 10 code analysis tools:
readFile,listFiles,analyzeSymbols,getFileStructure,searchCode,buildSemanticContext,checkScaffolding,initializeContext,fillScaffolding,scaffoldPlan - Exposes 2 resource templates:
context://codebase/{contextType}for semantic context,file://{path}for file contents - Uses stdio transport for seamless Claude Code integration
- Configure in
~/.claude/settings.jsonwithnpx @ai-coders/context mcp
- Exposes 10 code analysis tools:
-
MCP Scaffolding Tools: New tools for AI agents to manage
.contextscaffoldingcheckScaffolding- Check if scaffolding exists with granular status (docs, agents, plans separately)initializeContext- Initialize.contextscaffolding with template filesfillScaffolding- Analyze codebase and generate content for each template (AI agent writes the suggestedContent to each file)scaffoldPlan- Create plan templates in.context/plans/with optional semantic analysis
-
Passthrough Server: New
servecommand for external AI agent integration- JSON-RPC style communication via stdin/stdout
- Supports methods:
capabilities,tool.list,tool.call,context.build,agent.run - Real-time notifications for progress, tool calls, and results
- Protocol types with Zod validation for type safety
- Enables any AI agent to use code analysis tools without MCP support
-
Agent sync command: New
sync-agentscommand to sync agent playbooks to AI tool directories- Syncs from
.context/agents/(source of truth) to tool-specific directories - Built-in presets:
claude(.claude/agents),github(.github/agents),cursor(.cursor/agents) - Two sync modes:
symlink(default, uses relative symlinks) andmarkdown(generates reference files) - Custom target support via
--targetflag for any AI tool directory --dry-runto preview changes,--forceto overwrite existing files- Cross-platform: Windows fallback (file copy) when symlinks require elevated permissions
- Full i18n support (English and Portuguese)
- Syncs from
-
Interactive sync flow: Added "Sync agents to AI tools" option to interactive mode
- Prompts for source directory, sync mode, target selection, and options
- Supports preset selection or custom path input
-
Multi-provider AI support: Added support for OpenAI, Anthropic, Google, and OpenRouter providers
- New
--providerflag forfillandplancommands - Auto-detection of available API keys from environment variables
- Provider-specific model defaults (e.g.,
gpt-5.2for OpenAI,claude-sonnet-4.5for Anthropic)
- New
-
Semantic context mode: Token-efficient LLM calls using pre-computed Tree-sitter analysis
- Enabled by default for faster, more consistent documentation generation
- New
--no-semanticflag to disable and use tool-based exploration instead - New
--languagesflag to specify programming languages for analysis - Supports: TypeScript, JavaScript, Python, Go, Rust, Java, C++, C#, Ruby, PHP
-
Real-time agent progress display: Visual feedback during LLM operations
- Shows which agent is currently working (DocumentationAgent, PlaybookAgent, PlanAgent)
- Displays tool calls and their results in real-time
- Progress indicators for multi-step operations
-
SemanticContextBuilder: New service for generating optimized context strings
buildDocumentationContext()- Context for documentation generationbuildPlaybookContext()- Context for agent playbook generationbuildPlanContext()- Context for development plan generation- Caches analysis results for efficiency
-
LSP integration for semantic analysis: Optional deep semantic analysis via Language Server Protocol
- New
--lspflag forfillcommand to enable LSP-enhanced analysis - Enabled by default for
plan fill(use--no-lspto disable) - Adds type information, implementations, and references to symbol analysis
- Supports TypeScript, JavaScript, Python, Go, and Rust language servers
- Graceful fallback when LSP servers are unavailable
- New
-
CodebaseAnalyzer: New orchestrator for hybrid Tree-sitter + LSP analysis
- Combines fast syntactic analysis with deep semantic understanding
- Architecture layer detection (Services, Controllers, Models, Utils, etc.)
- Design pattern detection (Factory, Repository, Service Layer, Observer, etc.)
- Entry point and public API identification
- Dependency graph construction
-
Unit tests for services: Comprehensive test coverage for core services
PlanServicetests (13 tests) - scaffolding, plan fill, error handling, LSP optionsFillServicetests (17 tests) - directory validation, agent processing, options handlingCodebaseAnalyzertests (24 tests) - LSP integration, architecture detection, pattern detection
-
Agent event callback system: Infrastructure for tracking agent progress
onAgentStart,onAgentStep,onToolCall,onToolResult,onAgentCompletecallbacks- Integrated with CLI UI for real-time display
-
Interactive mode enhancements:
- Language selection for semantic analysis (checkbox interface)
- Semantic mode toggle (defaults to enabled)
- Provider and model selection
-
AI SDK integration: Replaced axios-based OpenRouter client with Vercel AI SDK
- Enables tool-based agent workflows with
generateTextandmaxSteps - Structured outputs with Zod schemas
- Better error handling and streaming support
- Enables tool-based agent workflows with
-
FillService refactored: Now uses specialized agents instead of basic LLM client
DocumentationAgentfor docs/*.md filesPlaybookAgentfor agents/*.md files- Agents support both semantic and tool-based modes
-
PlanService refactored: Uses
PlanAgentwith tool support- Better context gathering for plan generation
- Support for referenced docs and agents
-
Default behavior: Semantic context mode is now the default
- More token-efficient out of the box
- Use
--no-semanticfor thorough tool-based exploration
- axios dependency: Replaced with Vercel AI SDK for HTTP requests
- OpenRouterClient: Replaced with
AISdkClientsupporting multiple providers
ai- Vercel AI SDK core@ai-sdk/openai- OpenAI provider@ai-sdk/anthropic- Anthropic provider@ai-sdk/google- Google provider@ai-sdk/openrouter- OpenRouter providerzod- Schema validation for structured outputs@modelcontextprotocol/sdk- MCP server SDK for Claude Code integration
src/services/sync/- Agent sync service moduletypes.ts- Type definitions (SyncMode, PresetName, SyncOptions, etc.)presets.ts- Built-in target presets (claude, github, cursor)symlinkHandler.ts- Cross-platform symlink creationmarkdownReferenceHandler.ts- Markdown reference file generationsyncService.ts- Main sync orchestratorindex.ts- Barrel export
src/services/ai/aiSdkClient.ts- Main AI SDK clientsrc/services/ai/providerFactory.ts- Provider creation factorysrc/services/ai/schemas.ts- Zod schemas for tools and outputssrc/services/ai/tools/*.ts- Code analysis tools (readFile, listFiles, analyzeSymbols, checkScaffolding, initializeContext, scaffoldPlan, etc.)src/services/ai/agents/*.ts- Specialized agents (DocumentationAgent, PlaybookAgent, PlanAgent)src/services/ai/agentEvents.ts- Agent event callback typessrc/services/semantic/contextBuilder.ts- SemanticContextBuilder for pre-computed contextsrc/services/semantic/codebaseAnalyzer.ts- Main orchestrator for hybrid analysissrc/services/semantic/lsp/lspLayer.ts- LSP client for semantic queriessrc/services/semantic/treeSitter/treeSitterLayer.ts- Tree-sitter based parsingsrc/services/semantic/types.ts- Shared types for semantic analysissrc/services/plan/planService.test.ts- PlanService unit testssrc/services/fill/fillService.test.ts- FillService unit testssrc/services/semantic/codebaseAnalyzer.test.ts- CodebaseAnalyzer unit testssrc/services/mcp/- MCP server modulemcpServer.ts- Main MCP server implementationmcpServer.test.ts- MCP server testsindex.ts- Barrel export
src/services/passthrough/- Passthrough server moduleprotocol.ts- JSON-RPC protocol types with Zod schemasprotocol.test.ts- Protocol testsstdinReader.ts- stdin JSON reader with event emittercommandRouter.ts- Command routing and tool executioncommandRouter.test.ts- Router testsindex.ts- Barrel export
src/services/serve/- Serve command serviceserveService.ts- Main serve service implementationindex.ts- Barrel export
# Provider API keys
OPENROUTER_API_KEY=...
OPENAI_API_KEY=...
ANTHROPIC_API_KEY=...
GOOGLE_API_KEY=...
# Model overrides
OPENROUTER_MODEL=x-ai/grok-4.1-fast
OPENAI_MODEL=gpt-5.2
ANTHROPIC_MODEL=claude-sonnet-4.5
GOOGLE_MODEL=gemini-3-flash-previewInitial release with scaffolding capabilities, init, fill, and plan commands.