@apogeelabs/the-agency 0.4.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
 
@@ -122,14 +123,4 @@ The sync does **not** copy `settings.local.json` or `settings.json` — those ar
122
123
 
123
124
  ## Development
124
125
 
125
- ```bash
126
- pnpm install
127
- pnpm build # Compile TypeScript → dist/
128
- pnpm test # Run test suite
129
- ```
130
-
131
- Versioning is managed with [changesets](https://github.com/changesets/changesets). To propose a version bump:
132
-
133
- ```bash
134
- pnpm changeset
135
- ```
126
+ See the [DEVELOP readme](./DEVELOP.md) for information on how to develop within this repo.
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.4.0",
3
+ "version": "0.6.0",
4
4
  "description": "Centralized Claude Code agents, commands, and workflows",
5
5
  "type": "module",
6
6
  "bin": {
@@ -414,8 +414,9 @@ Am I in the **outer** `beforeEach`?
414
414
  - Always assert **count first**, then **arguments**: `toHaveBeenCalledTimes` before `toHaveBeenCalledWith`
415
415
  - Use `toHaveBeenNthCalledWith` for multiple calls with different args
416
416
  - **Equality matchers**:
417
- - Use `toBe` for primitives (strings, numbers, booleans, null, undefined) — it checks reference equality
417
+ - Use `toBe` for primitives (strings, integers, booleans, null, undefined) — it checks reference equality
418
418
  - Use `toEqual` for objects and arrays — it checks deep equality
419
+ - Use `toBeCloseTo` for floating-point numbers - it is tolerant of JavaScript's surprising rounding behavior
419
420
  - Never use `toBe` on objects (it will fail even if the contents match) or `toEqual` on primitives (it works but is imprecise)
420
421
  - **Assertion granularity** (in order of preference):
421
422
  1. **Full match** with `toEqual` — assert the entire object/array when possible
@@ -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.