aboutsummaryrefslogtreecommitdiff
path: root/.ai/workflows
Commit message (Collapse)AuthorAgeFilesLines
* docs(ai): point template references at in-repo claude-templates/Craig Jennings2026-05-152-16/+18
| | | | | | | | Canonical .ai/ source moved from ~/projects/claude-templates/ to ~/code/rulesets/claude-templates/ via subtree merge. Phase A.0's "Refresh claude-templates" step is now "Refresh rulesets" since there's only one repo to pull. Updates: - startup.org Phase A.0: rsync sources point at the in-repo path - protocols.org and cross-agent-comms.org: workflow-promotion target paths updated
* chore(ai): sync scripts and workflows from claude-templatesCraig Jennings2026-05-151-1/+1
| | | | | | | - todo-cleanup.el: :no-sync: tag now inherits down the outline tree - task-review.org: completion procedure scoped to top-level entries - cj-scan.py + cj-remove-block.py: helpers for cj-comment block handling - inbox-send.py: cross-project messaging via inbox directories
* docs(workflow): add date-coverage scan to the wrap-up flowCraig Jennings2026-05-141-0/+33
| | | | | | | | | | New sub-step under Step 3 surfaces [#A] and [#B] tasks in todo.org that have neither DEADLINE: nor SCHEDULED: directly under the heading. Candidates land in the same lint-followups.org the next morning's daily-prep merges in, so the operator reviews them at the start of the day instead of discovering the drift later. Why both timestamp shapes matter: DEADLINE is external (RFP cutoffs, partner-announced dates, regulatory). SCHEDULED is social (a commitment to surface to the team). The asymmetry drives the promotion rule — DEADLINE inside 7 days auto-promotes to [#A], SCHEDULED passing surfaces for re-eval without auto-promoting. High-priority work carrying neither is suspicious; the scan flags it, the operator decides whether to add a date, drop the priority, or confirm no-date-by-intent. Inline awk does the scan (no new script). Output appends to the follow-ups file under a dated heading; if no candidates, no append. Conservative: surfaces every candidate, expects false positives to be cheap dismissals. Counterpart to the DEADLINE-vs-SCHEDULED practice section just added to todo.org's '* Work Priority' header on the work side.
* chore(ai): sync lint-org script and wrap-it-up from claude-templatesCraig Jennings2026-05-141-0/+33
| | | | | | | Byte-identical pull of .ai/scripts/lint-org.el, .ai/scripts/tests/test-lint-org.el, and the new Step 3 lint section in .ai/workflows/wrap-it-up.org. Upstream: claude-templates 138f35f (feat) and 4eba98c (docs).
* feat(todo-cleanup): add --sync-child-priority mode for drifted childrenCraig Jennings2026-05-141-1/+25
| | | | | | | | | | When a parent task in todo.org gets reprioritized, its children frequently keep their original (lower) priority cookies, which then mismatches the parent's new importance. The new mode walks every heading with a priority cookie and bumps any direct child whose own cookie is lower (D ranks below A in org's default scheme). Down-only: parents are never bumped up to a child's priority. Priority-less parents and priority-less children are both left alone — sync does not invent priorities. Children opt out by carrying the :no-sync: literal tag, useful for Follow-up:/Spike: sub-tasks that are deliberately deprioritized. The tag match is literal regex against the heading line rather than going through org-get-tags, because org's default tag character class excludes hyphens — :no-sync: would not be parsed as a real tag in batch mode without a custom org-tag-re. org-map-entries visits headings in document order, so a multi-level chain [#A] → [#B] → [#D] collapses to the top priority in one pass: the middle bumps to [#A] before the walk reaches the leaf. wrap-it-up.org Step 3 now invokes --sync-child-priority after --archive-done. --check-child-priority is the report-only alias (--sync-child-priority --check) for previewing before applying. Default cadence is auto-apply, same as --archive-done.
* docs(rulesets): rename STALLED to VERIFY across skill + workflowCraig Jennings2026-05-131-2/+2
| | | | Renamed the org TODO keyword STALLED to VERIFY in respond-to-cj-comments.md (skill) and daily-prep.org (workflow). VERIFY reads as the next step rather than as a stuck state; the meaning is unchanged — items needing Craig's input.
* feat(workflows): thin-link Day's Priorities + auto-sync after triageCraig Jennings2026-05-132-2/+37
| | | | | | In daily-prep, Day's Priorities entries are now thin links to todo.org tasks rather than copies of their content. The substance — descriptions, drafts, research, sub-tasks, STALLED asks, recommended-approach blocks — lives in the matching todo.org task that Phase 3 creates or updates. Completed-today entries still convert to dated log headings as the day's record. Phase 3's Linear action-item step also gets a comment-as-child-header pattern: paste the @mention or comment inline rather than referencing it, so the reply can be drafted in the prep doc. In triage-intake, mbsync -a now runs at the end of every triage by default — no more "ask before syncing" — and a Synced line in the summary records the run.
* chore(ai): sync triage-intake workflow from claude-templatesCraig Jennings2026-05-113-2/+124
| | | | New on-demand triage-intake workflow. It scans every inbox source (the three mail accounts, Slack, Linear, open PRs, both calendars, recent todo.org edits), surfaces what moved, runs the Linear Dev-Review sweep, and marks all unread INBOX mail plus every touched Slack conversation read. Also registered in INDEX.org, and the stale triage-intake reference dropped from wrap-it-up.org.
* docs(workflows): add clean-todo workflowCraig Jennings2026-05-112-0/+60
| | | | clean-todo is the manual entry point for tidying todo.org: it runs the hygiene pass, then --archive-done (relocate completed level-2 subtrees into "Resolved"), then summarizes what changed and leaves the diff uncommitted for review. The wrap-up flow already does both passes at session end; clean-todo runs them on demand. It's listed in INDEX.org under the usual trigger phrases.
* docs(workflows): run todo-cleanup --archive-done in wrap-upCraig Jennings2026-05-111-3/+21
| | | | The wrap-up flow already runs the hygiene pass on todo.org; it now also runs --archive-done, which relocates completed level-2 subtrees from "Open Work" to "Resolved". Both passes are idempotent and skip cleanly when the file lacks the named sections, and any moves land in the wrap-up commit's diff for review before push.
* docs(workflows): require every worktree leftover to be resolved at wrapCraig Jennings2026-05-111-4/+35
| | | | Replace the old "intentional carryover" default in wrap-it-up.org. End every session with an empty `git status`: classify each leftover as a runtime artifact, a forgotten change, or pre-existing dirt, apply a concrete resolution unless the user explicitly defers, and log any deferral in the valediction so the next session knows it was a choice, not a miss.
* docs(workflows): Update DeepSat repo path in daily-prepCraig Jennings2026-05-081-1/+1
|
* chore(ai): correct stale ~/projects/work/ path references in workflows and ↵Craig Jennings2026-05-081-1/+1
| | | | scripts
* feat(wrap-it-up): add Linear Dev-Review sweep stepCraig Jennings2026-05-081-2/+23
| | | | Sweep Dev-Review tickets assigned to Craig before the wrap-up commit. Any whose linked PR has merged gets proposed for Done (chores, refactors, test backfills, dead-code removal) or PM Acceptance (real fixes or features users can verify). Tickets stuck in Dev Review after the PR merges hide real in-progress work. The step is idempotent and skips when Linear is not in use.
* chore(skills): remove humanizer (superseded by voice)Craig Jennings2026-05-071-1/+1
| | | | | | | | I deleted humanizer/SKILL.md now that all three callers (commits.md, respond-to-cj-comments.md, start-work.md) invoke /voice instead. The 25 humanizer patterns live on as patterns 1-25 in voice/SKILL.md. Same source (Wikipedia's Signs of AI writing), same prose, same examples — just renumbered alongside the universal good-writing additions and the personal-only patterns. I also updated .ai/notes.org and .ai/workflows/wrap-it-up.org to reference /voice personal instead of the old humanizer + manual-passes flow. The wrap-it-up change landed upstream in claude-templates first so it survives the next startup rsync. todo.org gets the matching update: the voice TODO is marked DONE with a "Built and shipped" timestamp, the publish-mode terminology is renamed to personal-mode throughout, the V1 scope checklist is ticked, the open questions are resolved with the answers we landed on during implementation, and the migration section records the delete-not-alias decision.
* chore(ai): sync template updates from claude-templatesCraig Jennings2026-05-061-1/+1
| | | | | | I added a "Shell aliases (=ls= → =exa=)" note to protocols.org so future sessions know to use \ls when capturing ls output programmatically. exa prints nothing to non-TTY pipes, so the symptom looks like an empty directory. I hit this earlier in the session when a sweep came back blank for a directory I knew was populated. I also fixed three stale ~/projects/career/ examples in cross-agent-comms/ docs that didn't get updated when career was renamed to work, and the daily-prep.org path leak from last session (~/code/deepsat/... → ~/projects/work/deepsat/code/...). The authoritative edits live in claude-templates. These rulesets snapshots landed via the standard rsync from upstream.
* chore(ai): initialize project notes and Claude tooling surfacesCraig Jennings2026-05-0623-0/+4973
Replace the seed notes.org with project-specific context (layout, install modes, task tracker location, recent inflection point). Bring in the synced template surfaces (protocols, workflows, scripts, references, retrospectives, someday-maybe) as tracked content for this content/documentation project.