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
-
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.
-
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.
-
Minimal change: 1 line of Rust in the constants array + docstring update. No new dependencies, no breaking changes, no API surface change.
-
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.
-
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
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## Skillssection of the system prompt. This part works.What's missing is the bootstrap. The
using-superpowersskill 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
hooks/hooks.json→ session-start scriptGEMINI.mdwith@includedirectives.opencode/plugins/superpowers.jshooks/hooks-cursor.jsonAcceptance test for new harnesses
Per superpowers' harness requirements, the test is:
Currently, DeepSeek TUI fails this test because the bootstrap is never injected.
Proposed solution
Add
DEEPSEEK.mdto the list of project context files incrates/tui/src/project_context.rs.What changes
Why this approach
Analogy to GEMINI.md: Gemini CLI reads
GEMINI.mdas its harness-specific instruction file. DeepSeek TUI should readDEEPSEEK.mdfor the same purpose.AGENTS.md is not appropriate for the bootstrap: In the superpowers repo,
AGENTS.mdcontains contributor guidelines (PR requirements, 94% rejection rate warnings, etc.). Forcing theusing-superpowersbootstrap intoAGENTS.mdwould conflate two unrelated concerns.Minimal change: 1 line of Rust in the constants array + docstring update. No new dependencies, no breaking changes, no API surface change.
Priority ordering: Placing
DEEPSEEK.mdafterAGENTS.mdbut beforeCLAUDE.mdfollows the existing convention — harness-specific files take precedence over generic ones, while the truly universalAGENTS.mdremains top priority.No new infrastructure: The
load_project_context()function already iterates over any number of entries in the array.as_system_block()already formats thesource=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 theCANDIDATESlistcrates/tui/src/utils.rs— add"deepseek.md"to the fallback key-file detectorproject_context.rs— mentionDEEPSEEK.mdPrior art
GEMINI.md— identical pattern.opencode/plugins/— harness-specific config fileshooks-cursor.json— harness-specific hook configThis follows the established convention across the ecosystem.
Related
brainstormingskill auto-triggers on "Let's make a react todo list"