Skip to content

feat: add DEEPSEEK.md as project context for harness integrations like superpowers #1851

@EmiyaKiritsugu3

Description

@EmiyaKiritsugu3

Problem

Superpowers is a plugin that adds a complete software development methodology to coding agents — brainstorming, TDD, subagent-driven development, code review, verification workflows, and more. It works across multiple harnesses (Claude Code, Gemini CLI, OpenCode, Cursor, Copilot CLI, Codex CLI).

DeepSeek TUI already auto-discovers superpowers skills from the workspace skills/ directory. The skills appear in the ## Skills section of the system prompt. This part works.

What's missing is the bootstrap. The using-superpowers skill contains strong mandate language ("You have superpowers. If a skill applies, you MUST use it.") that forces the model to check for relevant skills before taking any action. Without this bootstrap injected into the context at session start, skills are just passive metadata — the model sees them listed but has no reason to invoke them.

How other harnesses inject the bootstrap

Harness Mechanism
Claude Code hooks/hooks.json → session-start script
Gemini CLI GEMINI.md with @include directives
OpenCode .opencode/plugins/superpowers.js
Cursor hooks/hooks-cursor.json
DeepSeek TUI ❌ No mechanism currently

Acceptance test for new harnesses

Per superpowers' harness requirements, the test is:

Open a clean session and send: "Let's make a react todo list"

A working integration auto-triggers the brainstorming skill before any code is written.

Currently, DeepSeek TUI fails this test because the bootstrap is never injected.

Proposed solution

Add DEEPSEEK.md to the list of project context files in crates/tui/src/project_context.rs.

What changes

const PROJECT_CONTEXT_FILES: &[&str] = &[
    "AGENTS.md",
    "DEEPSEEK.md",          // ← NEW
    ".claude/instructions.md",
    "CLAUDE.md",
    ".deepseek/instructions.md",
];

Why this approach

  1. Analogy to GEMINI.md: Gemini CLI reads GEMINI.md as its harness-specific instruction file. DeepSeek TUI should read DEEPSEEK.md for the same purpose.

  2. AGENTS.md is not appropriate for the bootstrap: In the superpowers repo, AGENTS.md contains contributor guidelines (PR requirements, 94% rejection rate warnings, etc.). Forcing the using-superpowers bootstrap into AGENTS.md would conflate two unrelated concerns.

  3. Minimal change: 1 line of Rust in the constants array + docstring update. No new dependencies, no breaking changes, no API surface change.

  4. Priority ordering: Placing DEEPSEEK.md after AGENTS.md but before CLAUDE.md follows the existing convention — harness-specific files take precedence over generic ones, while the truly universal AGENTS.md remains top priority.

  5. No new infrastructure: The load_project_context() function already iterates over any number of entries in the array. as_system_block() already formats the source= attribute from whichever file is loaded.

Additional files to update (nice-to-have)

  • crates/tui/src/working_set.rs:detect_key_files() — add "DEEPSEEK.md" to the CANDIDATES list
  • crates/tui/src/utils.rs — add "deepseek.md" to the fallback key-file detector
  • Module docstring at the top of project_context.rs — mention DEEPSEEK.md

Prior art

  • Gemini CLI reads GEMINI.md — identical pattern
  • OpenCode reads .opencode/plugins/ — harness-specific config files
  • Cursor uses hooks-cursor.json — harness-specific hook config

This follows the established convention across the ecosystem.

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions