Skip to content

QA: validate ctxo init rule generation across all 7 AI platforms #37

Open

Description

@alperhankendi

Summary

Manually validate that ctxo init generates correct, working MCP usage rules for each supported AI coding assistant. Rules must be in the correct file, correct format, and actually picked up by the target tool.

Test Environment

npx ctxo-mcp init          # interactive
npx ctxo-mcp init --dry-run # preview

Platform Checklists

Claude Code (CLAUDE.md — append mode)

  • Rule section appended with <!-- ctxo-rules-start --> / <!-- ctxo-rules-end --> markers
  • Existing CLAUDE.md content preserved (not overwritten)
  • Re-running ctxo init replaces section (idempotent, no duplication)
  • Claude Code reads and follows the MCP tool usage rules in conversation
  • Rules include all 14 tool names (get_blast_radius, get_why_context, etc.)

Cursor (.cursor/rules/ctxo-mcp.mdc — create mode)

  • File created at .cursor/rules/ctxo-mcp.mdc
  • YAML frontmatter present: alwaysApply: true
  • Parent directory .cursor/rules/ auto-created if missing
  • Cursor loads the rule file and shows it in rules panel
  • Rules applied in Cursor chat/compose sessions

GitHub Copilot (.github/copilot-instructions.md — create mode)

  • File created at .github/copilot-instructions.md
  • Plain markdown format (no frontmatter)
  • Parent directory .github/ auto-created if missing
  • Copilot Chat picks up instructions in VS Code agent mode
  • Rules influence Copilot's tool selection behavior

Windsurf (.windsurfrules — create mode)

  • File created at project root as .windsurfrules
  • Plain markdown format (no frontmatter)
  • Windsurf Cascade reads and applies rules
  • Rules visible in Windsurf rules panel

Google Antigravity (AGENTS.md — create mode)

  • File created at project root as AGENTS.md
  • Plain markdown format
  • Antigravity agent reads AGENTS.md at session start
  • Rules applied during code modification tasks

Augment Code (augment-guidelines.md — create mode)

  • File created at project root as augment-guidelines.md
  • Plain markdown format
  • Augment Code extension reads guidelines file
  • Rules influence Augment's suggestions

Amazon Q (.amazonq/rules/ctxo-mcp.md — create mode)

  • File created at .amazonq/rules/ctxo-mcp.md
  • Parent directory .amazonq/rules/ auto-created if missing
  • Amazon Q Developer reads rules in agent mode
  • Rules influence Q's tool usage behavior

Cross-Platform Checks

Auto-Detection

  • Claude Code detected when CLAUDE.md or .claude/ exists
  • Cursor detected when .cursor/ or .cursorrules exists
  • Copilot detected when .github/ or .vscode/ exists
  • Windsurf detected when .windsurfrules or .windsurf/ exists
  • Antigravity detected when AGENTS.md, GEMINI.md, or .gemini/ exists
  • Augment detected when augment-guidelines.md or .augment/ exists
  • Amazon Q detected when .amazonq/ exists
  • Detected tools shown as pre-selected with green "(detected)" label

Scaffolding

  • .gitignore entry for .ctxo/.cache/ added (or skipped if present)
  • .ctxo/config.yaml created with defaults (or skipped if present)
  • .ctxo/index/ directory created

Non-Interactive Mode

  • ctxo init --tools claude-code,cursor -y works without prompts
  • ctxo init --rules regenerates rules without touching hooks or index dir
  • ctxo init --dry-run shows preview without creating files
  • Unknown tool ID prints error with valid options list

Idempotency

  • Running ctxo init twice does not duplicate rules in any file
  • CLAUDE.md section markers prevent duplication (append mode)
  • Create-mode files overwritten cleanly on re-run
  • Git hooks not duplicated on re-run

Activity

  1. murataslan1 commented on Apr 24, 2026

    @murataslan1
    Collaborator

    Cursor CLI/file validation completed for issue #37.

    Full report and confirmations are here:
    https://gist.github.com/murataslan1/4cda6e09c1cfa69ab03ef3cafa6342cd

    Validated on local checkout commit: f2f8c5db1083d681019a39710696cf86a87b9b5e

    Result: PASS for Cursor CLI/file behavior.

    Verified:

    • ctxo init --tools cursor -y creates .cursor/rules/ctxo-mcp.mdc
    • .cursor/rules/ is auto-created when missing
    • Cursor YAML frontmatter exists
    • alwaysApply: true exists
    • MCP usage guidance is present
    • key Ctxo tool names are present: get_blast_radius, get_why_context, get_pr_impact, search_symbols
    • second run is idempotent via SHA-256 comparison
    • ctxo init --tools cursor --dry-run does not write project files
    • expected scaffolding exists after real init: .ctxo/config.yaml, .ctxo/index/, .gitignore with .ctxo/.cache/
    • targeted tests passed: ai-rules.test.ts + init-command.test.ts, 47 tests total

    Validation used isolated temporary fixture directories under macOS $TMPDIR; no .cursor/ or generated fixture files were left in the repo root.

    No Cursor UI validation was performed. This covers CLI/file-level behavior only.

    Non-blocking findings:

    1. ctxo init --tools cursor --dry-run omits ancillary files that real init creates from the preview: .ctxo/config.yaml, .gitignore, .mcp.json.
    2. First creation of .cursor/rules/ctxo-mcp.mdc is reported as updated instead of created.

    Neither finding blocks checking off the Cursor CLI/file validation path. Please confirm whether you want a small follow-up PR for these two init-reporting/dry-run polish items.

  2. added this to the v0.9 milestone on Oct 1, 2026
  3. added
    improvementImprove existing behavior
    P2This release
    and removed
    enhancementNew feature or request
    on Oct 1, 2026
  4. alperhankendi commented on Oct 1, 2026

    @alperhankendi
    OwnerAuthor

    Decision (2026-10-01): do · P2 · size:M · milestone v0.9
    Why: Remaining checks (4 platforms, auto-detection, non-interactive mode) are needed before ctxo init can be called complete, so they ship in this release.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions