@apogeelabs/the-agency 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -50,6 +50,7 @@ Slash commands invoked in Claude Code sessions.
50
50
  | `/prep-pr` | Pre-submission PR prep and draft creation |
51
51
  | `/review-pr` | Structured PR review briefing |
52
52
  | `/weekly-summary` | Weekly synthesis of merged PRs |
53
+ | `/dnd-alignment` | D&D alignment chart from commit history |
53
54
 
54
55
  ### AI Context (`.ai/`)
55
56
 
package/dist/manifest.js CHANGED
@@ -13,7 +13,8 @@ const manifest = {
13
13
  { file: "pm.md", description: "Interactive product requirements discovery" },
14
14
  { file: "prep-pr.md", description: "Pre-submission PR prep and draft creation" },
15
15
  { file: "review-pr.md", description: "Structured PR review briefing" },
16
- { file: "weekly-summary.md", description: "Weekly synthesis of merged PRs" }
16
+ { file: "weekly-summary.md", description: "Weekly synthesis of merged PRs" },
17
+ { file: "dnd-alignment.md", description: "D&D alignment chart from commit history" }
17
18
  ],
18
19
  ai: [
19
20
  { file: "UnitTestGeneration.md", description: "TypeScript/Jest unit testing style guide" },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apogeelabs/the-agency",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
4
4
  "description": "Centralized Claude Code agents, commands, and workflows",
5
5
  "type": "module",
6
6
  "bin": {
@@ -0,0 +1,84 @@
1
+ # D&D Alignment Chart Command
2
+
3
+ ## Goal
4
+
5
+ Analyze recent commit history and assign a D&D alignment (Lawful Good, Neutral Good, Chaotic Good, Lawful Neutral, True Neutral, Chaotic Neutral, Lawful Evil, Neutral Evil, Chaotic Evil) to each committer based on their commit patterns, message style, and the nature of their work. This is for fun — treat it like a roast, not a performance review.
6
+
7
+ ## Constraints
8
+
9
+ - **Be funny.** Dry humor, sarcasm, and well-placed jabs are mandatory. This is a comedy bit backed by data, not a Jira report.
10
+ - **Ground it in evidence.** Quote actual commit messages. The humor lands because it's _true_.
11
+ - **Every committer gets a fantasy class/title** in addition to their alignment. The title should reflect their commit personality (e.g., "The Paladin of Tech Debt," "The Test Suite Warlock").
12
+ - **Include commit counts** as supporting data for each person.
13
+ - **Don't pull punches.** If someone's commit history is chaotic, say so. If someone made one commit and vanished, that's comedy gold.
14
+ - **Don't be cruel.** Roast the commits, not the person. There's a line between "your commit history is a hostage negotiation" and actually being mean.
15
+ - **Typos in commit messages are fair game.** Always.
16
+
17
+ ## Step 1: Fetch Commit History
18
+
19
+ Fetch the last ~30 days of non-merge commits:
20
+
21
+ ```bash
22
+ git log --since="30 days ago" --pretty=format:"%an|%s" --no-merges
23
+ ```
24
+
25
+ Also get per-author commit counts:
26
+
27
+ ```bash
28
+ git log --since="30 days ago" --pretty=format:"%an" --no-merges | sort | uniq -c | sort -rn
29
+ ```
30
+
31
+ ## Step 2: Analyze Patterns
32
+
33
+ For each committer, look for patterns in their commit messages and work:
34
+
35
+ - **What kind of work do they do?** Feature building, bug fixing, cleanup, infrastructure, tests, docs?
36
+ - **How do they name commits?** Terse? Verbose? Chaotic capitalization?
37
+ - **What's their commit cadence?** Many small commits or few large ones?
38
+ - **Any recurring themes?** Lots of "fix" commits? Lots of "remove" commits? An endless skip/unskip cycle?
39
+ - **Anything funny in the messages?** Typos, frustration, oddly specific wording?
40
+
41
+ Use these patterns to determine alignment:
42
+
43
+ - **Lawful**: Follows process, systematic, methodical, adds tooling/enforcement
44
+ - **Chaotic**: Unpredictable patterns, high blast radius, skip/unskip cycles, inconsistent capitalization
45
+ - **Neutral**: Balanced, pragmatic, no strong lean either way
46
+ - **Good**: Improves things for others, security fixes, cleanup, documentation
47
+ - **Evil**: Breaks things (intentionally or otherwise), adds complexity, creates tech debt
48
+ - **Neutral (moral axis)**: Neither improves nor degrades, just ships what's needed
49
+
50
+ ## Step 3: Write the Report
51
+
52
+ Write the output to `docs/reports/dnd-alignment-chart-YYYY-MM-DD.md` (using today's date).
53
+
54
+ If a file already exists at that path, overwrite it.
55
+
56
+ ## Output Format
57
+
58
+ ```markdown
59
+ # {Repo Name} — D&D Alignment Chart ({Month} {Year})
60
+
61
+ Based on ~{N} commits from the last 30 days. This is strictly for fun and not a performance review (unless your alignment is Chaotic Evil, in which case HR will be in touch).
62
+
63
+ ---
64
+
65
+ ## {Name} — **{Alignment}** ({Fantasy Title})
66
+
67
+ **{N} commits** | Evidence: {quoted commit message snippets}
68
+
69
+ {1-2 paragraphs of analysis with humor. Reference specific commits. Make it sting a little.}
70
+
71
+ ---
72
+
73
+ [Repeat for each committer, ordered by commit count descending]
74
+
75
+ ---
76
+
77
+ _Roll for initiative on that next PR._
78
+ ```
79
+
80
+ ## Notes
81
+
82
+ - If someone has only 1 commit, lean into the mystery of it. One commit is inherently funny.
83
+ - If the repo has a co-author bot (like Claude), don't assign it an alignment — it's an NPC.
84
+ - End with the "Roll for initiative" line. It's tradition now.
@@ -0,0 +1,60 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Read",
5
+ "Edit",
6
+ "Write",
7
+ "Glob",
8
+ "Grep",
9
+ "Bash(npm *)",
10
+ "Bash(npx *)",
11
+ "Bash(git diff *)",
12
+ "Bash(git log *)",
13
+ "Bash(git status *)",
14
+ "Bash(git show *)",
15
+ "Bash(git branch *)",
16
+ "Bash(git fetch *)",
17
+ "Bash(git commit *)",
18
+ "Bash(git checkout *)",
19
+ "Bash(git pull *)",
20
+ "Bash(git merge *)",
21
+ "Bash(git rebase *)",
22
+ "Bash(git reset *)",
23
+ "Bash(git revert *)",
24
+ "Bash(git stash *)",
25
+ "Bash(gh pr *)",
26
+ "Bash(gh browse *)",
27
+ "Bash(gh gist *)",
28
+ "Bash(mkdir *)",
29
+ "Bash(ls *)",
30
+ "Bash(wc *)",
31
+ "Bash(chmod *)",
32
+ "Bash(cat *)",
33
+ "Bash(head *)",
34
+ "Bash(tail *)",
35
+ "Bash(pnpm build:*)",
36
+ "mcp__voicemode__converse",
37
+ "Bash(gh auth status:*)",
38
+ "Bash(gh repo view:*)",
39
+ "Bash(gh pr create:*)",
40
+ "Bash(git rm:*)",
41
+ "Bash(voicemode --help:*)",
42
+ "Bash(voicemode config:*)",
43
+ "Bash(git push:*)",
44
+ "Bash(git -C /Users/jimcowart/git/apogee/the-agency status)",
45
+ "Bash(git -C /Users/jimcowart/git/apogee/the-agency diff --stat)",
46
+ "Bash(git -C /Users/jimcowart/git/apogee/the-agency log --oneline -5)",
47
+ "Bash(git -C /Users/jimcowart/git/apogee/the-agency branch:*)",
48
+ "Bash(git -C /Users/jimcowart/git/apogee/the-agency rev-parse --abbrev-ref --symbolic-full-name @{u})",
49
+ "Bash(git -C /Users/jimcowart/git/apogee/the-agency push -u origin command-updates)",
50
+ "Bash(echo:*)"
51
+ ],
52
+ "deny": [
53
+ "Bash(rm -rf /*)",
54
+ "Bash(rm -rf ~*)",
55
+ "Bash(curl * | *)",
56
+ "Edit(~/.ssh/**)",
57
+ "Edit(/etc/**)"
58
+ ]
59
+ }
60
+ }