Compare commits

..

3 Commits

Author SHA1 Message Date
Dmytro Tkachenko 8d1cd217a0 chore(agents): add "Git workflow (every task)" rule to all agents + skills
Bakes the branching discipline into the team so it's followed automatically:
at the start of a new task, ask the user to commit + push any unpushed work,
then branch off main and build the feature on the new branch (never commit to
main), commit + push at the end. Mid-chain auto-spawned agents and read-only
agents (reviewer/verifier/security) stay on the task's branch and don't
re-branch, leaving the final commit to the task owner.

Appended one identical "## Git workflow (every task)" section to all 11
.claude/agents/*.md and all 11 .claude/skills/*/SKILL.md (22 files). Docs/
tooling only (.claude/ is not in the built app) — no version bump / CHANGELOG.

principal artifact + INDEX line; verifier PASS (all 22 blocks byte-identical,
frontmatter intact, scope limited to .claude + audit files, mid-chain clause
behaviorally sound).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VEsaHQx8cXr1hFrKU42UK6
2026-08-29 12:32:00 +03:00
Dmitry_Tkachenko 54c883d095 Merge pull request 'feat(insights): full-width category items with more space' (#2) from feature/insights-fullwidth-items into main
Reviewed-on: https://gitea.mycloud.dp.ua/Dmitry_Tkachenko/forge/pulls/2
2026-08-29 12:27:02 +03:00
Dmytro Tkachenko 993a141ead feat(insights): full-width category items with more space
Inside "Alert categories" and "Watch list", the category cards are now a
full-width single-column stack instead of a narrow multi-column grid, with
more breathing room (larger gap, roomier headers + ticket rows, taller
expanded list). Each card was already a click-to-expand accordion and
remains so — CSS-only, index.tsx unchanged. The section-level collapse from
2.3.1 still works (.grid[hidden] preserved).

- Insights.module.scss: .grid grid -> flex column (gap 16); cardHead
  padding 16/20; cardTitle 14px; row padding 8/20; list max-height 440
- bump 2.3.1 -> 2.3.2 (root + client), CHANGELOG [2.3.2]
- engineer artifact + INDEX; verifier-log PASS entry

verifier PASS: reproduced tsc + vite build + npm test 9/9; confirmed
flex-column + .grid[hidden] collapse in compiled CSS; no row-grid
regression; no new dependency.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VEsaHQx8cXr1hFrKU42UK6
2026-08-29 12:24:52 +03:00
30 changed files with 281 additions and 11 deletions
+9
View File
@@ -26,3 +26,12 @@ task, what you changed, and your evidence (the commands you ran + their output).
`VERDICT: REDO`, fix every listed gap and resubmit; only return once it returns `VERDICT: PASS`. `VERDICT: REDO`, fix every listed gap and resubmit; only return once it returns `VERDICT: PASS`.
There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `principal` to change approach, then keep going until PASS. Never skip this (`verifier` There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `principal` to change approach, then keep going until PASS. Never skip this (`verifier`
itself is exempt, to avoid recursion). itself is exempt, to avoid recursion).
## Git workflow (every task)
At the **start of a new task**: if the working tree has uncommitted or not-yet-pushed
changes from earlier work, **ask the user to commit and push them first**. Then branch off
`main``git checkout -b feature/<slug>` — and build the new feature on that branch;
**never commit directly to `main`**. Commit at the end and `git push -u origin <branch>`.
If you were auto-spawned mid-chain, or are a read-only agent (e.g. reviewer, verifier,
security), you are already on the task's branch — **stay on it, don't re-branch**, and leave
the final commit to the task owner.
+9
View File
@@ -29,3 +29,12 @@ task, what you changed, and your evidence (the commands you ran + their output).
`VERDICT: REDO`, fix every listed gap and resubmit; only return once it returns `VERDICT: PASS`. `VERDICT: REDO`, fix every listed gap and resubmit; only return once it returns `VERDICT: PASS`.
There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `principal` to change approach, then keep going until PASS. Never skip this (`verifier` There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `principal` to change approach, then keep going until PASS. Never skip this (`verifier`
itself is exempt, to avoid recursion). itself is exempt, to avoid recursion).
## Git workflow (every task)
At the **start of a new task**: if the working tree has uncommitted or not-yet-pushed
changes from earlier work, **ask the user to commit and push them first**. Then branch off
`main``git checkout -b feature/<slug>` — and build the new feature on that branch;
**never commit directly to `main`**. Commit at the end and `git push -u origin <branch>`.
If you were auto-spawned mid-chain, or are a read-only agent (e.g. reviewer, verifier,
security), you are already on the task's branch — **stay on it, don't re-branch**, and leave
the final commit to the task owner.
+9
View File
@@ -28,3 +28,12 @@ task, what you changed, and your evidence (the commands you ran + their output).
`VERDICT: REDO`, fix every listed gap and resubmit; only return once it returns `VERDICT: PASS`. `VERDICT: REDO`, fix every listed gap and resubmit; only return once it returns `VERDICT: PASS`.
There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `principal` to change approach, then keep going until PASS. Never skip this (`verifier` There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `principal` to change approach, then keep going until PASS. Never skip this (`verifier`
itself is exempt, to avoid recursion). itself is exempt, to avoid recursion).
## Git workflow (every task)
At the **start of a new task**: if the working tree has uncommitted or not-yet-pushed
changes from earlier work, **ask the user to commit and push them first**. Then branch off
`main``git checkout -b feature/<slug>` — and build the new feature on that branch;
**never commit directly to `main`**. Commit at the end and `git push -u origin <branch>`.
If you were auto-spawned mid-chain, or are a read-only agent (e.g. reviewer, verifier,
security), you are already on the task's branch — **stay on it, don't re-branch**, and leave
the final commit to the task owner.
+9
View File
@@ -31,3 +31,12 @@ task, what you changed, and your evidence (the commands you ran + their output).
`VERDICT: REDO`, fix every listed gap and resubmit; only return once it returns `VERDICT: PASS`. `VERDICT: REDO`, fix every listed gap and resubmit; only return once it returns `VERDICT: PASS`.
There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `principal` to change approach, then keep going until PASS. Never skip this (`verifier` There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `principal` to change approach, then keep going until PASS. Never skip this (`verifier`
itself is exempt, to avoid recursion). itself is exempt, to avoid recursion).
## Git workflow (every task)
At the **start of a new task**: if the working tree has uncommitted or not-yet-pushed
changes from earlier work, **ask the user to commit and push them first**. Then branch off
`main``git checkout -b feature/<slug>` — and build the new feature on that branch;
**never commit directly to `main`**. Commit at the end and `git push -u origin <branch>`.
If you were auto-spawned mid-chain, or are a read-only agent (e.g. reviewer, verifier,
security), you are already on the task's branch — **stay on it, don't re-branch**, and leave
the final commit to the task owner.
+9
View File
@@ -23,3 +23,12 @@ task, what you changed, and your evidence (the commands you ran + their output).
`VERDICT: REDO`, fix every listed gap and resubmit; only return once it returns `VERDICT: PASS`. `VERDICT: REDO`, fix every listed gap and resubmit; only return once it returns `VERDICT: PASS`.
There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `principal` to change approach, then keep going until PASS. Never skip this (`verifier` There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `principal` to change approach, then keep going until PASS. Never skip this (`verifier`
itself is exempt, to avoid recursion). itself is exempt, to avoid recursion).
## Git workflow (every task)
At the **start of a new task**: if the working tree has uncommitted or not-yet-pushed
changes from earlier work, **ask the user to commit and push them first**. Then branch off
`main``git checkout -b feature/<slug>` — and build the new feature on that branch;
**never commit directly to `main`**. Commit at the end and `git push -u origin <branch>`.
If you were auto-spawned mid-chain, or are a read-only agent (e.g. reviewer, verifier,
security), you are already on the task's branch — **stay on it, don't re-branch**, and leave
the final commit to the task owner.
+9
View File
@@ -32,3 +32,12 @@ task, what you changed, and your evidence (the commands you ran + their output).
`VERDICT: REDO`, fix every listed gap and resubmit; only return once it returns `VERDICT: PASS`. `VERDICT: REDO`, fix every listed gap and resubmit; only return once it returns `VERDICT: PASS`.
There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `principal` to change approach, then keep going until PASS. Never skip this (`verifier` There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `principal` to change approach, then keep going until PASS. Never skip this (`verifier`
itself is exempt, to avoid recursion). itself is exempt, to avoid recursion).
## Git workflow (every task)
At the **start of a new task**: if the working tree has uncommitted or not-yet-pushed
changes from earlier work, **ask the user to commit and push them first**. Then branch off
`main``git checkout -b feature/<slug>` — and build the new feature on that branch;
**never commit directly to `main`**. Commit at the end and `git push -u origin <branch>`.
If you were auto-spawned mid-chain, or are a read-only agent (e.g. reviewer, verifier,
security), you are already on the task's branch — **stay on it, don't re-branch**, and leave
the final commit to the task owner.
+9
View File
@@ -29,3 +29,12 @@ task, what you changed, and your evidence (the commands you ran + their output).
`VERDICT: REDO`, fix every listed gap and resubmit; only return once it returns `VERDICT: PASS`. `VERDICT: REDO`, fix every listed gap and resubmit; only return once it returns `VERDICT: PASS`.
There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `principal` to change approach, then keep going until PASS. Never skip this (`verifier` There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `principal` to change approach, then keep going until PASS. Never skip this (`verifier`
itself is exempt, to avoid recursion). itself is exempt, to avoid recursion).
## Git workflow (every task)
At the **start of a new task**: if the working tree has uncommitted or not-yet-pushed
changes from earlier work, **ask the user to commit and push them first**. Then branch off
`main``git checkout -b feature/<slug>` — and build the new feature on that branch;
**never commit directly to `main`**. Commit at the end and `git push -u origin <branch>`.
If you were auto-spawned mid-chain, or are a read-only agent (e.g. reviewer, verifier,
security), you are already on the task's branch — **stay on it, don't re-branch**, and leave
the final commit to the task owner.
+9
View File
@@ -27,3 +27,12 @@ task, what you changed, and your evidence (the commands you ran + their output).
`VERDICT: REDO`, fix every listed gap and resubmit; only return once it returns `VERDICT: PASS`. `VERDICT: REDO`, fix every listed gap and resubmit; only return once it returns `VERDICT: PASS`.
There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `principal` to change approach, then keep going until PASS. Never skip this (`verifier` There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `principal` to change approach, then keep going until PASS. Never skip this (`verifier`
itself is exempt, to avoid recursion). itself is exempt, to avoid recursion).
## Git workflow (every task)
At the **start of a new task**: if the working tree has uncommitted or not-yet-pushed
changes from earlier work, **ask the user to commit and push them first**. Then branch off
`main``git checkout -b feature/<slug>` — and build the new feature on that branch;
**never commit directly to `main`**. Commit at the end and `git push -u origin <branch>`.
If you were auto-spawned mid-chain, or are a read-only agent (e.g. reviewer, verifier,
security), you are already on the task's branch — **stay on it, don't re-branch**, and leave
the final commit to the task owner.
+9
View File
@@ -31,3 +31,12 @@ task, what you changed, and your evidence (the commands you ran + their output).
`VERDICT: REDO`, fix every listed gap and resubmit; only return once it returns `VERDICT: PASS`. `VERDICT: REDO`, fix every listed gap and resubmit; only return once it returns `VERDICT: PASS`.
There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `principal` to change approach, then keep going until PASS. Never skip this (`verifier` There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `principal` to change approach, then keep going until PASS. Never skip this (`verifier`
itself is exempt, to avoid recursion). itself is exempt, to avoid recursion).
## Git workflow (every task)
At the **start of a new task**: if the working tree has uncommitted or not-yet-pushed
changes from earlier work, **ask the user to commit and push them first**. Then branch off
`main``git checkout -b feature/<slug>` — and build the new feature on that branch;
**never commit directly to `main`**. Commit at the end and `git push -u origin <branch>`.
If you were auto-spawned mid-chain, or are a read-only agent (e.g. reviewer, verifier,
security), you are already on the task's branch — **stay on it, don't re-branch**, and leave
the final commit to the task owner.
+9
View File
@@ -26,3 +26,12 @@ task, what you changed, and your evidence (the commands you ran + their output).
`VERDICT: REDO`, fix every listed gap and resubmit; only return once it returns `VERDICT: PASS`. `VERDICT: REDO`, fix every listed gap and resubmit; only return once it returns `VERDICT: PASS`.
There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `principal` to change approach, then keep going until PASS. Never skip this (`verifier` There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `principal` to change approach, then keep going until PASS. Never skip this (`verifier`
itself is exempt, to avoid recursion). itself is exempt, to avoid recursion).
## Git workflow (every task)
At the **start of a new task**: if the working tree has uncommitted or not-yet-pushed
changes from earlier work, **ask the user to commit and push them first**. Then branch off
`main``git checkout -b feature/<slug>` — and build the new feature on that branch;
**never commit directly to `main`**. Commit at the end and `git push -u origin <branch>`.
If you were auto-spawned mid-chain, or are a read-only agent (e.g. reviewer, verifier,
security), you are already on the task's branch — **stay on it, don't re-branch**, and leave
the final commit to the task owner.
+9
View File
@@ -78,3 +78,12 @@ There is **no round cap** — hold the bar at *perfect for the task* and keep re
progress**, add an `## Escalate: principal` note so principal can bring a different approach or progress**, add an `## Escalate: principal` note so principal can bring a different approach or
specialist — that is to get the work unstuck and keep it moving toward PASS, **never** to give up specialist — that is to get the work unstuck and keep it moving toward PASS, **never** to give up
or accept less than perfect. or accept less than perfect.
## Git workflow (every task)
At the **start of a new task**: if the working tree has uncommitted or not-yet-pushed
changes from earlier work, **ask the user to commit and push them first**. Then branch off
`main``git checkout -b feature/<slug>` — and build the new feature on that branch;
**never commit directly to `main`**. Commit at the end and `git push -u origin <branch>`.
If you were auto-spawned mid-chain, or are a read-only agent (e.g. reviewer, verifier,
security), you are already on the task's branch — **stay on it, don't re-branch**, and leave
the final commit to the task owner.
+9
View File
@@ -29,3 +29,12 @@ before finalizing. Keep recommendations concrete — name the option you'd pick
Before returning your result, submit it to **`/verifier`**: the original task, what you changed, Before returning your result, submit it to **`/verifier`**: the original task, what you changed,
and your evidence (commands run + output). If it returns `VERDICT: REDO`, fix every listed gap and and your evidence (commands run + output). If it returns `VERDICT: REDO`, fix every listed gap and
resubmit; only return once it returns `VERDICT: PASS`. There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `/principal` to change approach, then keep going until PASS. Never skip this (`/verifier` itself is exempt, to avoid recursion). resubmit; only return once it returns `VERDICT: PASS`. There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `/principal` to change approach, then keep going until PASS. Never skip this (`/verifier` itself is exempt, to avoid recursion).
## Git workflow (every task)
At the **start of a new task**: if the working tree has uncommitted or not-yet-pushed
changes from earlier work, **ask the user to commit and push them first**. Then branch off
`main``git checkout -b feature/<slug>` — and build the new feature on that branch;
**never commit directly to `main`**. Commit at the end and `git push -u origin <branch>`.
If you were auto-spawned mid-chain, or are a read-only agent (e.g. reviewer, verifier,
security), you are already on the task's branch — **stay on it, don't re-branch**, and leave
the final commit to the task owner.
+9
View File
@@ -30,3 +30,12 @@ server. Present schema diffs before applying. End with `## Next`.
Before returning your result, submit it to **`/verifier`**: the original task, what you changed, Before returning your result, submit it to **`/verifier`**: the original task, what you changed,
and your evidence (commands run + output). If it returns `VERDICT: REDO`, fix every listed gap and and your evidence (commands run + output). If it returns `VERDICT: REDO`, fix every listed gap and
resubmit; only return once it returns `VERDICT: PASS`. There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `/principal` to change approach, then keep going until PASS. Never skip this (`/verifier` itself is exempt, to avoid recursion). resubmit; only return once it returns `VERDICT: PASS`. There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `/principal` to change approach, then keep going until PASS. Never skip this (`/verifier` itself is exempt, to avoid recursion).
## Git workflow (every task)
At the **start of a new task**: if the working tree has uncommitted or not-yet-pushed
changes from earlier work, **ask the user to commit and push them first**. Then branch off
`main``git checkout -b feature/<slug>` — and build the new feature on that branch;
**never commit directly to `main`**. Commit at the end and `git push -u origin <branch>`.
If you were auto-spawned mid-chain, or are a read-only agent (e.g. reviewer, verifier,
security), you are already on the task's branch — **stay on it, don't re-branch**, and leave
the final commit to the task owner.
+9
View File
@@ -29,3 +29,12 @@ visual direction, show the option and check in once. End with `## Next`.
Before returning your result, submit it to **`/verifier`**: the original task, what you changed, Before returning your result, submit it to **`/verifier`**: the original task, what you changed,
and your evidence (commands run + output). If it returns `VERDICT: REDO`, fix every listed gap and and your evidence (commands run + output). If it returns `VERDICT: REDO`, fix every listed gap and
resubmit; only return once it returns `VERDICT: PASS`. There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `/principal` to change approach, then keep going until PASS. Never skip this (`/verifier` itself is exempt, to avoid recursion). resubmit; only return once it returns `VERDICT: PASS`. There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `/principal` to change approach, then keep going until PASS. Never skip this (`/verifier` itself is exempt, to avoid recursion).
## Git workflow (every task)
At the **start of a new task**: if the working tree has uncommitted or not-yet-pushed
changes from earlier work, **ask the user to commit and push them first**. Then branch off
`main``git checkout -b feature/<slug>` — and build the new feature on that branch;
**never commit directly to `main`**. Commit at the end and `git push -u origin <branch>`.
If you were auto-spawned mid-chain, or are a read-only agent (e.g. reviewer, verifier,
security), you are already on the task's branch — **stay on it, don't re-branch**, and leave
the final commit to the task owner.
+9
View File
@@ -31,3 +31,12 @@ user sign-off (deploy to the NAS is not a drive-by). End with `## Next`.
Before returning your result, submit it to **`/verifier`**: the original task, what you changed, Before returning your result, submit it to **`/verifier`**: the original task, what you changed,
and your evidence (commands run + output). If it returns `VERDICT: REDO`, fix every listed gap and and your evidence (commands run + output). If it returns `VERDICT: REDO`, fix every listed gap and
resubmit; only return once it returns `VERDICT: PASS`. There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `/principal` to change approach, then keep going until PASS. Never skip this (`/verifier` itself is exempt, to avoid recursion). resubmit; only return once it returns `VERDICT: PASS`. There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `/principal` to change approach, then keep going until PASS. Never skip this (`/verifier` itself is exempt, to avoid recursion).
## Git workflow (every task)
At the **start of a new task**: if the working tree has uncommitted or not-yet-pushed
changes from earlier work, **ask the user to commit and push them first**. Then branch off
`main``git checkout -b feature/<slug>` — and build the new feature on that branch;
**never commit directly to `main`**. Commit at the end and `git push -u origin <branch>`.
If you were auto-spawned mid-chain, or are a read-only agent (e.g. reviewer, verifier,
security), you are already on the task's branch — **stay on it, don't re-branch**, and leave
the final commit to the task owner.
+9
View File
@@ -28,3 +28,12 @@ Keep **Time Machine**'s docs true (see `CLAUDE.md`).
Before returning your result, submit it to **`/verifier`**: the original task, what you changed, Before returning your result, submit it to **`/verifier`**: the original task, what you changed,
and your evidence (commands run + output). If it returns `VERDICT: REDO`, fix every listed gap and and your evidence (commands run + output). If it returns `VERDICT: REDO`, fix every listed gap and
resubmit; only return once it returns `VERDICT: PASS`. There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `/principal` to change approach, then keep going until PASS. Never skip this (`/verifier` itself is exempt, to avoid recursion). resubmit; only return once it returns `VERDICT: PASS`. There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `/principal` to change approach, then keep going until PASS. Never skip this (`/verifier` itself is exempt, to avoid recursion).
## Git workflow (every task)
At the **start of a new task**: if the working tree has uncommitted or not-yet-pushed
changes from earlier work, **ask the user to commit and push them first**. Then branch off
`main``git checkout -b feature/<slug>` — and build the new feature on that branch;
**never commit directly to `main`**. Commit at the end and `git push -u origin <branch>`.
If you were auto-spawned mid-chain, or are a read-only agent (e.g. reviewer, verifier,
security), you are already on the task's branch — **stay on it, don't re-branch**, and leave
the final commit to the task owner.
+9
View File
@@ -36,3 +36,12 @@ Trivial one-liner → just do it. Non-trivial → short plan, one check-in, exec
Before returning your result, submit it to **`/verifier`**: the original task, what you changed, Before returning your result, submit it to **`/verifier`**: the original task, what you changed,
and your evidence (commands run + output). If it returns `VERDICT: REDO`, fix every listed gap and and your evidence (commands run + output). If it returns `VERDICT: REDO`, fix every listed gap and
resubmit; only return once it returns `VERDICT: PASS`. There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `/principal` to change approach, then keep going until PASS. Never skip this (`/verifier` itself is exempt, to avoid recursion). resubmit; only return once it returns `VERDICT: PASS`. There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `/principal` to change approach, then keep going until PASS. Never skip this (`/verifier` itself is exempt, to avoid recursion).
## Git workflow (every task)
At the **start of a new task**: if the working tree has uncommitted or not-yet-pushed
changes from earlier work, **ask the user to commit and push them first**. Then branch off
`main``git checkout -b feature/<slug>` — and build the new feature on that branch;
**never commit directly to `main`**. Commit at the end and `git push -u origin <branch>`.
If you were auto-spawned mid-chain, or are a read-only agent (e.g. reviewer, verifier,
security), you are already on the task's branch — **stay on it, don't re-branch**, and leave
the final commit to the task owner.
+9
View File
@@ -38,3 +38,12 @@ secrets, or deploy to the NAS without explicit sign-off. End with a summary + `#
Before returning your result, submit it to **`/verifier`**: the original task, what you changed, Before returning your result, submit it to **`/verifier`**: the original task, what you changed,
and your evidence (commands run + output). If it returns `VERDICT: REDO`, fix every listed gap and and your evidence (commands run + output). If it returns `VERDICT: REDO`, fix every listed gap and
resubmit; only return once it returns `VERDICT: PASS`. There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `/principal` to change approach, then keep going until PASS. Never skip this (`/verifier` itself is exempt, to avoid recursion). resubmit; only return once it returns `VERDICT: PASS`. There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `/principal` to change approach, then keep going until PASS. Never skip this (`/verifier` itself is exempt, to avoid recursion).
## Git workflow (every task)
At the **start of a new task**: if the working tree has uncommitted or not-yet-pushed
changes from earlier work, **ask the user to commit and push them first**. Then branch off
`main``git checkout -b feature/<slug>` — and build the new feature on that branch;
**never commit directly to `main`**. Commit at the end and `git push -u origin <branch>`.
If you were auto-spawned mid-chain, or are a read-only agent (e.g. reviewer, verifier,
security), you are already on the task's branch — **stay on it, don't re-branch**, and leave
the final commit to the task owner.
+9
View File
@@ -28,3 +28,12 @@ secrets, or deploy — route those to `/dba`, `/security`, `/devops`. End with `
Before returning your result, submit it to **`/verifier`**: the original task, what you changed, Before returning your result, submit it to **`/verifier`**: the original task, what you changed,
and your evidence (commands run + output). If it returns `VERDICT: REDO`, fix every listed gap and and your evidence (commands run + output). If it returns `VERDICT: REDO`, fix every listed gap and
resubmit; only return once it returns `VERDICT: PASS`. There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `/principal` to change approach, then keep going until PASS. Never skip this (`/verifier` itself is exempt, to avoid recursion). resubmit; only return once it returns `VERDICT: PASS`. There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `/principal` to change approach, then keep going until PASS. Never skip this (`/verifier` itself is exempt, to avoid recursion).
## Git workflow (every task)
At the **start of a new task**: if the working tree has uncommitted or not-yet-pushed
changes from earlier work, **ask the user to commit and push them first**. Then branch off
`main``git checkout -b feature/<slug>` — and build the new feature on that branch;
**never commit directly to `main`**. Commit at the end and `git push -u origin <branch>`.
If you were auto-spawned mid-chain, or are a read-only agent (e.g. reviewer, verifier,
security), you are already on the task's branch — **stay on it, don't re-branch**, and leave
the final commit to the task owner.
+9
View File
@@ -30,3 +30,12 @@ Ranked findings (critical → minor), each with file:line, impact, and a fix own
Before returning your result, submit it to **`/verifier`**: the original task, what you changed, Before returning your result, submit it to **`/verifier`**: the original task, what you changed,
and your evidence (commands run + output). If it returns `VERDICT: REDO`, fix every listed gap and and your evidence (commands run + output). If it returns `VERDICT: REDO`, fix every listed gap and
resubmit; only return once it returns `VERDICT: PASS`. There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `/principal` to change approach, then keep going until PASS. Never skip this (`/verifier` itself is exempt, to avoid recursion). resubmit; only return once it returns `VERDICT: PASS`. There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `/principal` to change approach, then keep going until PASS. Never skip this (`/verifier` itself is exempt, to avoid recursion).
## Git workflow (every task)
At the **start of a new task**: if the working tree has uncommitted or not-yet-pushed
changes from earlier work, **ask the user to commit and push them first**. Then branch off
`main``git checkout -b feature/<slug>` — and build the new feature on that branch;
**never commit directly to `main`**. Commit at the end and `git push -u origin <branch>`.
If you were auto-spawned mid-chain, or are a read-only agent (e.g. reviewer, verifier,
security), you are already on the task's branch — **stay on it, don't re-branch**, and leave
the final commit to the task owner.
+9
View File
@@ -30,3 +30,12 @@ End with `## Next`.
Before returning your result, submit it to **`/verifier`**: the original task, what you changed, Before returning your result, submit it to **`/verifier`**: the original task, what you changed,
and your evidence (commands run + output). If it returns `VERDICT: REDO`, fix every listed gap and and your evidence (commands run + output). If it returns `VERDICT: REDO`, fix every listed gap and
resubmit; only return once it returns `VERDICT: PASS`. There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `/principal` to change approach, then keep going until PASS. Never skip this (`/verifier` itself is exempt, to avoid recursion). resubmit; only return once it returns `VERDICT: PASS`. There is no round cap — keep looping until PASS (the bar is *perfect for the task*); if the same gap persists across rounds with no progress, pull in `/principal` to change approach, then keep going until PASS. Never skip this (`/verifier` itself is exempt, to avoid recursion).
## Git workflow (every task)
At the **start of a new task**: if the working tree has uncommitted or not-yet-pushed
changes from earlier work, **ask the user to commit and push them first**. Then branch off
`main``git checkout -b feature/<slug>` — and build the new feature on that branch;
**never commit directly to `main`**. Commit at the end and `git push -u origin <branch>`.
If you were auto-spawned mid-chain, or are a read-only agent (e.g. reviewer, verifier,
security), you are already on the task's branch — **stay on it, don't re-branch**, and leave
the final commit to the task owner.
+9
View File
@@ -68,3 +68,12 @@ full rubric. Read-only: return the job, never fix it. There is **no round cap**
progress**, add `## Escalate: principal` so principal can change the approach — to get unstuck and progress**, add `## Escalate: principal` so principal can change the approach — to get unstuck and
continue toward PASS, never to give up. Hold the bar at *perfect for the task* — approve because continue toward PASS, never to give up. Hold the bar at *perfect for the task* — approve because
it's right, not because it's close. it's right, not because it's close.
## Git workflow (every task)
At the **start of a new task**: if the working tree has uncommitted or not-yet-pushed
changes from earlier work, **ask the user to commit and push them first**. Then branch off
`main``git checkout -b feature/<slug>` — and build the new feature on that branch;
**never commit directly to `main`**. Commit at the end and `git push -u origin <branch>`.
If you were auto-spawned mid-chain, or are a read-only agent (e.g. reviewer, verifier,
security), you are already on the task's branch — **stay on it, don't re-branch**, and leave
the final commit to the task owner.
+10
View File
@@ -4,6 +4,16 @@ All notable changes to **FORGE** are documented here.
Format based on [Keep a Changelog](https://keepachangelog.com/); this project uses Format based on [Keep a Changelog](https://keepachangelog.com/); this project uses
[Semantic Versioning](https://semver.org/). [Semantic Versioning](https://semver.org/).
## [2.3.2] — 2026-08-29
### Changed
- **PM Insights — full-width category items.** Inside **Alert categories** and
**Watch list**, each category is now a **full-width accordion** stacked in a single
column (was a narrow multi-column grid), with more breathing room: larger inter-card
gap, roomier card headers and ticket rows, and a taller expanded list. The click-to-
expand behaviour per category is unchanged. (CSS-only: the `.grid` becomes a flex
column; `.cardHead`/`.row` padding widened.)
## [2.3.1] — 2026-08-29 ## [2.3.1] — 2026-08-29
### Changed ### Changed
+2
View File
@@ -1,4 +1,6 @@
# Artifact index # Artifact index
- [principal-20260829-122943](principal-20260829-122943.md) — Team policy: appended "Git workflow (every task)" rule to all 11 agents + 11 skills (commit+push unpushed work → branch from `main` → feature on new branch; mid-chain/read-only agents stay on the branch). Docs/tooling only, no version bump. verifier PASS.
- [engineer-20260829-122201](engineer-20260829-122201.md) — PM Insights: category items in "Alert categories" + "Watch list" now full-width single-column accordions with more space (grid→flex column, roomier card/row padding). CSS-only. v2.3.2. verifier PASS.
- [engineer-20260829-120746](engineer-20260829-120746.md) — PM Insights: "Alert categories" + "Watch list" now collapsible accordions (new `Section`, `ChevronIcon`, `.grid[hidden]` collapse, `aria-expanded`/`aria-controls`). v2.3.1. verifier PASS. - [engineer-20260829-120746](engineer-20260829-120746.md) — PM Insights: "Alert categories" + "Watch list" now collapsible accordions (new `Section`, `ChevronIcon`, `.grid[hidden]` collapse, `aria-expanded`/`aria-controls`). v2.3.1. verifier PASS.
- [engineer-20260827-190753](engineer-20260827-190753.md) — Jira statusDurations+movements + chart #17 (Active tab), /api/analytics/jira-durations, seed-enriched from board_state. v2.3.0. - [engineer-20260827-190753](engineer-20260827-190753.md) — Jira statusDurations+movements + chart #17 (Active tab), /api/analytics/jira-durations, seed-enriched from board_state. v2.3.0.
- [engineer-20260827-185932](engineer-20260827-185932.md) — Extension Jira sync (SNOW→Jira, attach-only /api/sync/jira, custom-domain + PAT). v2.2.0. Live-verified attach-only. - [engineer-20260827-185932](engineer-20260827-185932.md) — Extension Jira sync (SNOW→Jira, attach-only /api/sync/jira, custom-domain + PAT). v2.2.0. Live-verified attach-only.
@@ -0,0 +1,28 @@
# engineer — PM Insights: full-width category items with more space
**Date:** 2026-08-29 · v2.3.2 · branch `feature/insights-fullwidth-items`
## Built
Follow-up to the section accordions (v2.3.1, merged as PR #1). The categories inside
**Alert categories** and **Watch list** were a narrow multi-column grid of click-to-expand
cards; they are now a **full-width, single-column stack** with more breathing room.
**CSS-only**`client/src/pages/Insights/Insights.module.scss`:
- `.grid`: `display:grid; grid-template-columns: repeat(auto-fill, minmax(300px,1fr))`
`display:flex; flex-direction:column; gap:$s-4`. Each `.card` now spans full width, one
per row, with a larger inter-card gap. `.grid[hidden]{display:none}` kept (section-collapse
still works).
- `.cardHead` padding `12px 14px``$s-4 $s-5` (16/20); `.cardTitle` 13px → 14px.
- `.row` padding `6px 14px``$s-2 $s-5` (8/20); `.emptyRow` `10px 14px``$s-3 $s-5`.
- `.list` max-height 340 → 440px (fuller expanded list on the wider rows).
- `Insights/index.tsx` unchanged — each item was already an accordion.
- Version root+client 2.3.1 → 2.3.2; CHANGELOG `[2.3.2]`.
## Verified
- client `tsc --noEmit` clean; `vite build` OK. Full gate `npm test` = client 6/6 + root 3/3
(root deps freshly installed — that was the earlier deploy blocker, unrelated to this change).
- Compiled CSS confirms `._grid_doeho_78{display:flex;flex-direction:column;gap:16px}` +
`[hidden]{display:none}`.
- verifier: (see verifier-log entry for 2026-08-29).
## Next: done.
@@ -0,0 +1,31 @@
# principal — team-wide "Git workflow (every task)" rule
**Date:** 2026-08-29 · branch `chore/agent-git-workflow` · docs/tooling only (no app version bump)
## Change
User asked to bake the git discipline into the team so it's followed automatically:
*"every new task → ask to commit and push not-pushed code → branch from master → build the
feature on the new branch."* User chose scope: **all 11 agents + all 11 skills** (22 files).
Appended one identical `## Git workflow (every task)` section to the end of every
`.claude/agents/*.md` and `.claude/skills/*/SKILL.md`. The rule:
- At the **start of a new task**, if the tree has uncommitted/unpushed work, **ask the user
to commit and push it first**.
- Then **branch off `main`** (`git checkout -b feature/<slug>`), build the feature there,
**never commit directly to `main`**, commit at the end, `git push -u origin <branch>`.
- **Mid-chain auto-spawned** agents and **read-only** agents (reviewer/verifier/security)
**stay on the task's branch — don't re-branch**, and leave the final commit to the task owner.
(This clause prevents the engineer→reviewer→verifier chain from each re-branching.)
## Not shipped code
`.claude/` is developer tooling, not part of the built app (the Docker build copies `server/`
+ `client/`), so **no version bump / CHANGELOG / build** — an artifact + INDEX line + the
verifier gate are the appropriate audit trail here.
## Verified
- `grep -c "## Git workflow (every task)"` across the 22 targets → exactly 1 each (22 total).
- Spot-checked a read-only agent (`verifier.md`) and a writer skill (`engineer/SKILL.md`):
clean append, frontmatter intact, wording fits both roles.
- verifier: (see verifier-log entry for 2026-08-29).
## Next: done.
+2
View File
@@ -17,3 +17,5 @@
- 2026-08-27 19:11 · engineer · Jira statusDurations+movements+chart #17 · VERDICT: PASS · re-ran: server+client tsc=0, root vitest 3/3, client vitest 6/6, live SQL agg on tickets(jira?statusDurations)=73 rows, booted dist+curl endpoint · probed: 401 unauth (got 401), min-2 filter drops Cancelled n=1, ordering known-workflow-first + extras avgDays-desc, ms/86.4M day math matches SQL exactly (UAT 16.14d/21, Closed 23.51d/16, InProgress 4.90d/37), guards NaN/<=0, client null-safe (jiraDur=[] + length>0 gate), static SQL no user input, additive jsonb no DDL · PASS - 2026-08-27 19:11 · engineer · Jira statusDurations+movements+chart #17 · VERDICT: PASS · re-ran: server+client tsc=0, root vitest 3/3, client vitest 6/6, live SQL agg on tickets(jira?statusDurations)=73 rows, booted dist+curl endpoint · probed: 401 unauth (got 401), min-2 filter drops Cancelled n=1, ordering known-workflow-first + extras avgDays-desc, ms/86.4M day math matches SQL exactly (UAT 16.14d/21, Closed 23.51d/16, InProgress 4.90d/37), guards NaN/<=0, client null-safe (jiraDur=[] + length>0 gate), static SQL no user input, additive jsonb no DDL · PASS
- 2026-08-29 11:20 · devops · SSH NAS host → mycloud.dp.ua:2323 · VERDICT: PASS · re-ran: grep 192.168.50.2 (only comment+artifact), grep NAS_HOST (all mycloud), bash -n push-to-nas.sh OK · probed: all ssh/scp/rsync hops use $NAS_HOST not hardcoded IP; port 2323 preserved; illustrative comment+historical artifact intentional · PASS - 2026-08-29 11:20 · devops · SSH NAS host → mycloud.dp.ua:2323 · VERDICT: PASS · re-ran: grep 192.168.50.2 (only comment+artifact), grep NAS_HOST (all mycloud), bash -n push-to-nas.sh OK · probed: all ssh/scp/rsync hops use $NAS_HOST not hardcoded IP; port 2323 preserved; illustrative comment+historical artifact intentional · PASS
- 2026-08-29 12:07 · engineer · Insights alert/watch sections as accordions · VERDICT: PASS · re-ran: tsc -p (clean), vite build (139 modules, exit 0), grep compiled CSS (.grid[hidden]{display:none} present, specificity/order beats .grid), token defs in globals.scss · probed: collapse hides grid via hidden+override; aria-controls id always-rendered (no dangling ref when collapsed); unique slugs alert-categories/watch-list (no dup id); per-card open state diff-unchanged (no regression); chevron rotate(90deg) bound to aria-expanded=true · PASS - 2026-08-29 12:07 · engineer · Insights alert/watch sections as accordions · VERDICT: PASS · re-ran: tsc -p (clean), vite build (139 modules, exit 0), grep compiled CSS (.grid[hidden]{display:none} present, specificity/order beats .grid), token defs in globals.scss · probed: collapse hides grid via hidden+override; aria-controls id always-rendered (no dangling ref when collapsed); unique slugs alert-categories/watch-list (no dup id); per-card open state diff-unchanged (no regression); chevron rotate(90deg) bound to aria-expanded=true · PASS
- 2026-08-29 12:23 · designer/engineer · Insights full-width accordion items (CSS) · VERDICT: PASS · re-ran: vite build OK, tsc clean, npm test 9/9 (client 6 + root 3), grepped dist CSS · probed: section hidden-collapse specificity (.grid[hidden] 0,2,0 beats .grid 0,1,0 → display:none wins), flex-column full-width via default align-items:stretch, .row internal grid columns intact + tokens compile (sass would error if undefined) · PASS
- 2026-08-29 12:31 · docwriter/tooling · git-workflow rule appended to 22 agent+skill files · VERDICT: PASS · re-ran: grep -c=1 all 22; md5 of each block → 22 identical; head-1=--- x22, tail-1 identical x22; git branch -a (no master, default main); porcelain=22 targets+INDEX+artifact only · probed: mid-chain re-branch clause (exempts reviewer/verifier/security — holds), master→main mapping (no master branch — correct), block-drift/frontmatter-corruption (none) · PASS
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"name": "forge-client", "name": "forge-client",
"private": true, "private": true,
"version": "2.3.1", "version": "2.3.2",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",
@@ -54,10 +54,9 @@
} }
.grid { .grid {
display: grid; display: flex;
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); flex-direction: column;
gap: $s-3; gap: $s-4;
align-items: start;
} }
.grid[hidden] { display: none; } .grid[hidden] { display: none; }
@@ -75,13 +74,13 @@
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
gap: $s-3; gap: $s-3;
padding: 12px 14px; padding: $s-4 $s-5;
border: none; border: none;
background: transparent; background: transparent;
cursor: pointer; cursor: pointer;
&:hover { background: var(--surface-alt); } &:hover { background: var(--surface-alt); }
} }
.cardTitle { font-size: 13px; font-weight: 600; color: var(--text); } .cardTitle { font-size: 14px; font-weight: 600; color: var(--text); }
.counts { display: flex; align-items: center; gap: 6px; } .counts { display: flex; align-items: center; gap: 6px; }
.problem { .problem {
min-width: 22px; text-align: center; font-size: 11px; font-weight: 700; min-width: 22px; text-align: center; font-size: 11px; font-weight: 700;
@@ -92,18 +91,18 @@
padding: 1px 7px; border-radius: 999px; background: var(--surface-alt); color: var(--text-muted); padding: 1px 7px; border-radius: 999px; background: var(--surface-alt); color: var(--text-muted);
} }
.list { list-style: none; border-top: 1px solid var(--border); max-height: 340px; overflow-y: auto; } .list { list-style: none; border-top: 1px solid var(--border); max-height: 440px; overflow-y: auto; }
.row { .row {
display: grid; display: grid;
grid-template-columns: auto 1fr auto auto auto; grid-template-columns: auto 1fr auto auto auto;
align-items: center; align-items: center;
gap: $s-2; gap: $s-2;
padding: 6px 14px; padding: $s-2 $s-5;
font-size: 12px; font-size: 12px;
border-bottom: 1px solid var(--border); border-bottom: 1px solid var(--border);
&:last-child { border-bottom: none; } &:last-child { border-bottom: none; }
} }
.emptyRow { padding: 10px 14px; color: var(--text-dim); font-size: 12px; } .emptyRow { padding: $s-3 $s-5; color: var(--text-dim); font-size: 12px; }
.rowNum { display: inline-flex; align-items: center; gap: 3px; font-family: var(--mono); font-weight: 700; color: var(--primary); white-space: nowrap; } .rowNum { display: inline-flex; align-items: center; gap: 3px; font-family: var(--mono); font-weight: 700; color: var(--primary); white-space: nowrap; }
.rowDesc { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text); } .rowDesc { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text); }
.rowMeta { color: var(--text-muted); white-space: nowrap; max-width: 110px; overflow: hidden; text-overflow: ellipsis; } .rowMeta { color: var(--text-muted); white-space: nowrap; max-width: 110px; overflow: hidden; text-overflow: ellipsis; }
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "forge", "name": "forge",
"version": "2.3.1", "version": "2.3.2",
"description": "FORGE 2.0 — ServiceNow ticket analytics portal (RITM/SCTASK) with roles, PM insights, and a Chrome sync extension", "description": "FORGE 2.0 — ServiceNow ticket analytics portal (RITM/SCTASK) with roles, PM insights, and a Chrome sync extension",
"main": "dist/index.js", "main": "dist/index.js",
"private": true, "private": true,