feat(prompts): weekly-report instructions from file, point at data sections

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
mika kuns
2026-06-04 14:13:15 +02:00
parent 79bfc79d33
commit ac1e9b06de

View File

@@ -5,33 +5,19 @@ namespace ClaudeDo.Worker.Report;
public static class WeekReportPromptBuilder public static class WeekReportPromptBuilder
{ {
private const string Instructions = """
You are generating a concise weekly standup report for a software developer.
Summarize what they accomplished between {0} and {1}.
Rules:
- Write the ENTIRE report in German.
- Group by day. One "## {{Wochentag}}, {{dd.MM.yyyy}}" section per day that has
activity (German weekday names). Omit days with no activity entirely.
- Within each day: 3-5 first-person, past-tense bullets ("- Habe X umgesetzt",
"- Y behoben"). Merge related small work into one bullet.
- Drop trivia: typo fixes, pure exploration, false starts, tooling/log noise.
- Blend the developer's own notes and the derived activity into ONE deduplicated
bullet list per day. The developer's notes are authoritative - never omit or
contradict their substance.
- Name the project/repo when it adds clarity.
- Output ONLY the dated sections. No preamble, no intro, no closing remarks.
""";
public static string Build( public static string Build(
DateOnly start, DateOnly end, DateOnly start, DateOnly end,
IReadOnlyList<RepoActivity> activity, IReadOnlyList<RepoActivity> activity,
IReadOnlyDictionary<DateOnly, List<string>> notesByDay) IReadOnlyDictionary<DateOnly, List<string>> notesByDay)
{ {
var sb = new StringBuilder(); var sb = new StringBuilder();
sb.AppendLine(string.Format(CultureInfo.InvariantCulture, Instructions, sb.AppendLine(ClaudeDo.Data.PromptFiles.Render(
start.ToString("dd.MM.yyyy", CultureInfo.InvariantCulture), ClaudeDo.Data.PromptKind.WeeklyReport,
end.ToString("dd.MM.yyyy", CultureInfo.InvariantCulture))); new Dictionary<string, string>
{
["start"] = start.ToString("dd.MM.yyyy", CultureInfo.InvariantCulture),
["end"] = end.ToString("dd.MM.yyyy", CultureInfo.InvariantCulture),
}));
sb.AppendLine(); sb.AppendLine();
var days = new SortedDictionary<DateOnly, List<(string Repo, DayActivity Day)>>(); var days = new SortedDictionary<DateOnly, List<(string Repo, DayActivity Day)>>();