feat(prompts): add editable system/planning/agent prompt files

Introduces ~/.todo-app/prompts/{system,planning,agent}.md as the canonical
location for prompt content. The settings modal exposes "Open in editor"
shortcuts for each, and TaskRunner merges system.md (always) and agent.md
(for "agent"-tagged tasks) into the effective system prompt alongside the
existing global/list/task layers.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
mika kuns
2026-04-25 10:10:50 +02:00
parent 6c54759aa0
commit 7f96ae9508
4 changed files with 124 additions and 7 deletions

View File

@@ -0,0 +1,58 @@
namespace ClaudeDo.Data;
public enum PromptKind { System, Planning, Agent }
public static class PromptFiles
{
public static string Root => Path.Combine(Paths.AppDataRoot(), "prompts");
public static string PathFor(PromptKind kind) => kind switch
{
PromptKind.System => Path.Combine(Root, "system.md"),
PromptKind.Planning => Path.Combine(Root, "planning.md"),
PromptKind.Agent => Path.Combine(Root, "agent.md"),
_ => throw new ArgumentOutOfRangeException(nameof(kind))
};
public static void EnsureExists(PromptKind kind)
{
Directory.CreateDirectory(Root);
var path = PathFor(kind);
if (File.Exists(path)) return;
File.WriteAllText(path, DefaultFor(kind));
}
public static string? ReadOrNull(PromptKind kind)
{
var path = PathFor(kind);
if (!File.Exists(path)) return null;
var content = File.ReadAllText(path).Trim();
return string.IsNullOrEmpty(content) ? null : content;
}
private static string DefaultFor(PromptKind kind) => kind switch
{
PromptKind.System =>
"# System Prompt\n\n" +
"Baseline instructions appended to every task run.\n" +
"Edit this file to inject project-wide rules (style, conventions, hard constraints).\n",
PromptKind.Planning =>
"You are a planning assistant for ClaudeDo.\n" +
"Your role is to help break down a task into smaller, actionable subtasks.\n" +
"Your final goal WILL ALWAYS be the creation of Subtasks.\n\n" +
"ALWAYS invoke the `superpowers:brainstorming` skill via the Skill tool at the\n" +
"start of every planning session, and follow its process end-to-end. It guides\n" +
"you through clarifying questions, approach exploration, and design approval\n" +
"BEFORE any subtasks are created. Do not create child tasks until the user has\n" +
"approved a design.\n\n" +
"NEVER change files yourself.\n\n" +
"ALWAYS use the available MCP tools (mcp__claudedo__*) to create child tasks once\n" +
"the design is approved. When you are done planning, finalize the session.\n\n" +
"Be concise and focused. Each subtask should be independently executable.\n",
PromptKind.Agent =>
"# Agent Prompt\n\n" +
"Appended to the system prompt for tasks tagged \"agent\" (auto-queued runs).\n" +
"Use this for autonomous-execution rules that don't apply to manual runs.\n",
_ => ""
};
}