jackherd 0.0.1 → 1.0.1
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/CHANGELOG.md +65 -0
- package/LICENSE +21 -0
- package/NOTICE +38 -0
- package/README.md +1122 -3
- package/assets/branding/README.md +62 -0
- package/assets/branding/jackherd-icon-256.png +0 -0
- package/assets/branding/jackherd-icon-512.png +0 -0
- package/assets/branding/jackherd-icon-64.png +0 -0
- package/assets/branding/jackherd-icon-small-32.png +0 -0
- package/assets/branding/jackherd-icon-small-64.png +0 -0
- package/assets/branding/jackherd-icon-small.svg +1 -0
- package/assets/branding/jackherd-icon.svg +1 -0
- package/assets/branding/jackherd-logo-1024.png +0 -0
- package/assets/branding/jackherd-logo-512.png +0 -0
- package/assets/branding/jackherd-logo-dark-1024.png +0 -0
- package/assets/branding/jackherd-logo-dark-512.png +0 -0
- package/assets/branding/jackherd-logo-dark.svg +1 -0
- package/assets/branding/jackherd-logo-mark-1024.png +0 -0
- package/assets/branding/jackherd-logo-mark-512.png +0 -0
- package/assets/branding/jackherd-logo-mark.svg +1 -0
- package/assets/branding/jackherd-logo.svg +1 -0
- package/dist/chunk-R6MGHCD7.js +93 -0
- package/dist/config.d.ts +167 -0
- package/dist/config.js +401 -0
- package/dist/plan-format.d.ts +325 -0
- package/dist/plan-format.js +636 -0
- package/docs/lanes.mmd +9 -0
- package/docs/lanes.svg +1 -0
- package/docs/skills.mmd +10 -0
- package/docs/skills.svg +1 -0
- package/docs/workflow.svg +172 -0
- package/herdr-plugin/herdr-plugin.toml +22 -0
- package/herdr-plugin/open-plans.ts +43 -0
- package/herdr-plugin/restore-plans.ts +107 -0
- package/install.sh +157 -0
- package/kit/hooks/hooks/git-guard/decision.ts +438 -0
- package/kit/hooks/hooks/git-guard/index.ts +38 -0
- package/kit/hooks/hooks/git-guard/shell.ts +407 -0
- package/kit/hooks/hooks/watch-guard/background.ts +36 -0
- package/kit/hooks/hooks/watch-guard/decision.ts +53 -0
- package/kit/hooks/hooks/watch-guard/index.ts +11 -0
- package/kit/hooks/hooks/watch-guard/shell-input.ts +32 -0
- package/kit/hooks/hooks/watch-guard/starts.ts +154 -0
- package/kit/hooks/hooks/watch-guard/text-fallback.ts +40 -0
- package/kit/hooks/hooks.json +30 -0
- package/kit/hooks/statusline.sh +72 -0
- package/kit/review/agents/devops.md +11 -0
- package/kit/review/agents/public-content.md +39 -0
- package/kit/review/agents/security-audit.md +11 -0
- package/kit/review/agents/uncle-bob.md +11 -0
- package/kit/review/skills/devops/SKILL.md +50 -0
- package/kit/review/skills/diagnose/SKILL.md +140 -0
- package/kit/review/skills/diagnose/references/feedback-loops.md +59 -0
- package/kit/review/skills/diagnose/scripts/hitl-loop.template.sh +71 -0
- package/kit/review/skills/pre-commit/SKILL.md +100 -0
- package/kit/review/skills/review/SKILL.md +43 -0
- package/kit/review/skills/security-audit/SKILL.md +65 -0
- package/kit/review/skills/uncle-bob/SKILL.md +43 -0
- package/kit/rules/rules/kit/arc42.md +89 -0
- package/kit/rules/rules/kit/architecture-files.md +87 -0
- package/kit/rules/rules/kit/code-style.md +159 -0
- package/kit/rules/rules/kit/pull-requests.md +59 -0
- package/kit/rules/rules/kit/testing.md +91 -0
- package/kit/rules/rules/kit/writing-for-agents.md +110 -0
- package/kit/workflow/agents/explore.md +25 -0
- package/kit/workflow/agents/implement.md +16 -0
- package/kit/workflow/agents/plan.md +13 -0
- package/kit/workflow/agents/spec-review.md +96 -0
- package/kit/workflow/skills/follow/SKILL.md +48 -0
- package/kit/workflow/skills/grill/SKILL.md +60 -0
- package/kit/workflow/skills/implement/SKILL.md +107 -0
- package/kit/workflow/skills/orchestrate/SKILL.md +565 -0
- package/kit/workflow/skills/orchestrate/handover/decision.ts +247 -0
- package/kit/workflow/skills/orchestrate/handover/index.ts +171 -0
- package/kit/workflow/skills/plan/SKILL.md +118 -0
- package/kit/workflow/skills/plan/references/template-English.md +92 -0
- package/kit/workflow/skills/plan/references/template-German.md +92 -0
- package/kit/workflow/skills/start/SKILL.md +47 -0
- package/package.json +63 -5
- package/schemas/jackherd.schema.json +601 -0
- package/src/check/changes.ts +45 -0
- package/src/check/command-line.ts +12 -0
- package/src/check/command.ts +136 -0
- package/src/check/deferral-arrows.ts +41 -0
- package/src/check/execute.ts +29 -0
- package/src/check/glob.ts +15 -0
- package/src/check/plan-structure-check.ts +135 -0
- package/src/check/plan.ts +106 -0
- package/src/check/public-content-check.ts +32 -0
- package/src/check/public-content-facts.ts +177 -0
- package/src/check/public-content.ts +216 -0
- package/src/check/report.ts +55 -0
- package/src/check/result.ts +42 -0
- package/src/check/roots.ts +36 -0
- package/src/check/routing.ts +22 -0
- package/src/check/schema.ts +83 -0
- package/src/check/settings.ts +44 -0
- package/src/claude/paths.ts +14 -0
- package/src/cli.ts +46 -0
- package/src/config/command.ts +45 -0
- package/src/config/detect.ts +196 -0
- package/src/config/index.ts +2 -0
- package/src/config/json-schema.ts +5 -0
- package/src/config/legacy-names.ts +56 -0
- package/src/config/link-kinds.ts +25 -0
- package/src/config/location.ts +46 -0
- package/src/config/read-config.ts +42 -0
- package/src/config/repository-facts.ts +19 -0
- package/src/config/repository-values.ts +46 -0
- package/src/config/schema.ts +302 -0
- package/src/context/command.ts +39 -0
- package/src/context/coordinator-name.ts +16 -0
- package/src/context/fill.ts +69 -0
- package/src/context/index.ts +10 -0
- package/src/context/level.ts +22 -0
- package/src/context/options.ts +29 -0
- package/src/context/report.ts +42 -0
- package/src/context/session-log.ts +91 -0
- package/src/plan-format/drift.ts +69 -0
- package/src/plan-format/header.ts +27 -0
- package/src/plan-format/index.ts +9 -0
- package/src/plan-format/lanes.ts +128 -0
- package/src/plan-format/markdown.ts +98 -0
- package/src/plan-format/phase-tally.ts +55 -0
- package/src/plan-format/phases.ts +224 -0
- package/src/plan-format/plan-structure.ts +150 -0
- package/src/plan-format/progress.ts +202 -0
- package/src/plan-format/sprint-document.ts +69 -0
- package/src/plan-format/terminal-text.ts +28 -0
- package/src/plans/board-choice.ts +60 -0
- package/src/plans/board-pick.ts +72 -0
- package/src/plans/board-rows.ts +62 -0
- package/src/plans/command.ts +60 -0
- package/src/plans/ensure-panes.ts +71 -0
- package/src/plans/error-text.ts +5 -0
- package/src/plans/fetch.ts +96 -0
- package/src/plans/git.ts +145 -0
- package/src/plans/github.ts +35 -0
- package/src/plans/lane-discovery.ts +34 -0
- package/src/plans/lane-plans.ts +80 -0
- package/src/plans/layout.ts +881 -0
- package/src/plans/link-chips.ts +74 -0
- package/src/plans/live.ts +336 -0
- package/src/plans/markdown-html.ts +140 -0
- package/src/plans/options.ts +15 -0
- package/src/plans/phase-source.ts +71 -0
- package/src/plans/plan-chips.ts +75 -0
- package/src/plans/plan-panes.ts +206 -0
- package/src/plans/planned.ts +117 -0
- package/src/plans/pull-requests.ts +107 -0
- package/src/plans/restart-decision.ts +42 -0
- package/src/plans/selection.ts +352 -0
- package/src/plans/settings.ts +68 -0
- package/src/plans/single-flight.ts +25 -0
- package/src/plans/snapshot.ts +300 -0
- package/src/plans/sprint-export.ts +103 -0
- package/src/plans/sprint-html.ts +301 -0
- package/src/plans/sprint-page.ts +287 -0
- package/src/plans/supervisor.ts +124 -0
- package/src/plans/symbols.ts +54 -0
- package/src/plans/texts.ts +103 -0
- package/src/plans/unlisted-lanes.ts +45 -0
- package/src/plans/view.ts +68 -0
- package/src/plans/worked-phases.ts +53 -0
- package/src/sync/checksum.ts +13 -0
- package/src/sync/choice.ts +14 -0
- package/src/sync/command-context.ts +113 -0
- package/src/sync/command.ts +94 -0
- package/src/sync/error-message.ts +1 -0
- package/src/sync/gitignore.ts +45 -0
- package/src/sync/global-kit.ts +176 -0
- package/src/sync/herdr-plugin.ts +175 -0
- package/src/sync/if-changed.ts +109 -0
- package/src/sync/init-command.ts +239 -0
- package/src/sync/init.ts +136 -0
- package/src/sync/kit-hooks.ts +18 -0
- package/src/sync/kit-path.ts +77 -0
- package/src/sync/kit-source.ts +169 -0
- package/src/sync/kit.ts +9 -0
- package/src/sync/legacy-files.ts +116 -0
- package/src/sync/manifest.ts +44 -0
- package/src/sync/next-steps.ts +42 -0
- package/src/sync/plan-file.ts +154 -0
- package/src/sync/plan-hooks.ts +165 -0
- package/src/sync/project-fs.ts +132 -0
- package/src/sync/render.ts +60 -0
- package/src/sync/report.ts +96 -0
- package/src/sync/settings-hooks.ts +90 -0
- package/src/sync/settings-migration.ts +94 -0
- package/src/sync/settings-offer.ts +168 -0
- package/src/sync/setup-questions.ts +70 -0
- package/src/sync/setup.ts +52 -0
- package/src/sync/sync-plan.ts +120 -0
- package/src/sync/sync-result.ts +9 -0
- package/src/sync/sync.ts +307 -0
- package/src/sync/tools.ts +52 -0
- package/src/terminal/herdr.ts +91 -0
- package/src/terminal/index.ts +13 -0
- package/src/terminal/none.ts +7 -0
- package/src/terminal/open.ts +39 -0
- package/src/terminal/text.ts +159 -0
- package/src/terminal/types.ts +30 -0
- package/src/terminal/width.ts +90 -0
- package/src/update/command.ts +65 -0
- package/src/update/package-manager.ts +56 -0
- package/src/update/update.ts +105 -0
- package/src/version/installed-version.ts +32 -0
- package/src/version/release.ts +22 -0
- package/src/version/skill-diff.ts +63 -0
- package/src/version/started-kit.ts +14 -0
- package/src/vocabulary/index.ts +132 -0
- package/src/watch/base-tip.ts +18 -0
- package/src/watch/command.ts +919 -0
- package/src/watch/coordinator-fill.ts +76 -0
- package/src/watch/feedback-read.ts +73 -0
- package/src/watch/feedback.ts +308 -0
- package/src/watch/gh.ts +22 -0
- package/src/watch/github-read.ts +175 -0
- package/src/watch/herdr.ts +11 -0
- package/src/watch/json-guards.ts +9 -0
- package/src/watch/kit-update.ts +18 -0
- package/src/watch/lane-fill.ts +36 -0
- package/src/watch/lane-message.ts +99 -0
- package/src/watch/lane-progress.ts +44 -0
- package/src/watch/lane-report-file.ts +53 -0
- package/src/watch/lane-report.ts +270 -0
- package/src/watch/lane-search.ts +41 -0
- package/src/watch/lane-sources.ts +46 -0
- package/src/watch/lane-watch.ts +121 -0
- package/src/watch/monitor-tool.ts +19 -0
- package/src/watch/options.ts +79 -0
- package/src/watch/plan-badges-read.ts +30 -0
- package/src/watch/plan-badges.ts +66 -0
- package/src/watch/plan-views.ts +59 -0
- package/src/watch/preview-read.ts +60 -0
- package/src/watch/previews.ts +234 -0
- package/src/watch/pull-requests.ts +117 -0
- package/src/watch/single-report.ts +15 -0
- package/src/watch/skill-change.ts +61 -0
- package/src/watch/source-dry-run-command.ts +35 -0
- package/src/watch/source-dry-run.ts +124 -0
- package/src/watch/source-fields.ts +9 -0
- package/src/watch/source-path.ts +40 -0
- package/src/watch/source-run.ts +90 -0
- package/src/watch/sources.ts +344 -0
- package/src/watch/stream-output.ts +14 -0
- package/src/watch/texts.ts +76 -0
- package/src/watch/watch-events.ts +399 -0
- package/src/watch/watcher-lock.ts +145 -0
- package/src/watch/workflow-runs.ts +96 -0
package/docs/lanes.svg
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg aria-roledescription="flowchart-v2" role="graphics-document document" viewBox="0 0 843.4375 333.20001220703125" style="max-width: 843.4375px;" class="flowchart" xmlns="http://www.w3.org/2000/svg" width="100%" id="diagram"><style>#diagram{font-family:Helvetica,Arial,sans-serif;font-size:16px;fill:#000000;}#diagram .error-icon{fill:#552222;}#diagram .error-text{fill:#552222;stroke:#552222;}#diagram .edge-thickness-normal{stroke-width:1px;}#diagram .edge-thickness-thick{stroke-width:3.5px;}#diagram .edge-pattern-solid{stroke-dasharray:0;}#diagram .edge-thickness-invisible{stroke-width:0;fill:none;}#diagram .edge-pattern-dashed{stroke-dasharray:3;}#diagram .edge-pattern-dotted{stroke-dasharray:2;}#diagram .marker{fill:#666;stroke:#666;}#diagram .marker.cross{stroke:#666;}#diagram svg{font-family:Helvetica,Arial,sans-serif;font-size:16px;}#diagram p{margin:0;}#diagram .label{font-family:Helvetica,Arial,sans-serif;color:#000000;}#diagram .cluster-label text{fill:#333;}#diagram .cluster-label span{color:#333;}#diagram .cluster-label span p{background-color:transparent;}#diagram .label text,#diagram span{fill:#000000;color:#000000;}#diagram .node rect,#diagram .node circle,#diagram .node ellipse,#diagram .node polygon,#diagram .node path{fill:#eee;stroke:#999;stroke-width:1px;}#diagram .rough-node .label text,#diagram .node .label text,#diagram .image-shape .label,#diagram .icon-shape .label{text-anchor:middle;}#diagram .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#diagram .rough-node .label,#diagram .node .label,#diagram .image-shape .label,#diagram .icon-shape .label{text-align:center;}#diagram .node.clickable{cursor:pointer;}#diagram .root .anchor path{fill:#666!important;stroke-width:0;stroke:#666;}#diagram .arrowheadPath{fill:#333333;}#diagram .edgePath .path{stroke:#666;stroke-width:2.0px;}#diagram .flowchart-link{stroke:#666;fill:none;}#diagram .edgeLabel{background-color:white;text-align:center;}#diagram .edgeLabel p{background-color:white;}#diagram .edgeLabel rect{opacity:0.5;background-color:white;fill:white;}#diagram .labelBkg{background-color:rgba(255, 255, 255, 0.5);}#diagram .cluster rect{fill:hsl(0, 0%, 98.9215686275%);stroke:#707070;stroke-width:1px;}#diagram .cluster text{fill:#333;}#diagram .cluster span{color:#333;}#diagram div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:Helvetica,Arial,sans-serif;font-size:12px;background:hsl(-160, 0%, 93.3333333333%);border:1px solid #707070;border-radius:2px;pointer-events:none;z-index:100;}#diagram .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#000000;}#diagram rect.text{fill:none;stroke-width:0;}#diagram .icon-shape,#diagram .image-shape{background-color:white;text-align:center;}#diagram .icon-shape p,#diagram .image-shape p{background-color:white;padding:2px;}#diagram .icon-shape rect,#diagram .image-shape rect{opacity:0.5;background-color:white;fill:white;}#diagram :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style><g><marker orient="auto" markerHeight="8" markerWidth="8" markerUnits="userSpaceOnUse" refY="5" refX="5" viewBox="0 0 10 10" class="marker flowchart-v2" id="diagram_flowchart-v2-pointEnd"><path style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 0 0 L 10 5 L 0 10 z"></path></marker><marker orient="auto" markerHeight="8" markerWidth="8" markerUnits="userSpaceOnUse" refY="5" refX="4.5" viewBox="0 0 10 10" class="marker flowchart-v2" id="diagram_flowchart-v2-pointStart"><path style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 0 5 L 10 10 L 10 0 z"></path></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5" refX="11" viewBox="0 0 10 10" class="marker flowchart-v2" id="diagram_flowchart-v2-circleEnd"><circle style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" r="5" cy="5" cx="5"></circle></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5" refX="-1" viewBox="0 0 10 10" class="marker flowchart-v2" id="diagram_flowchart-v2-circleStart"><circle style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" r="5" cy="5" cx="5"></circle></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5.2" refX="12" viewBox="0 0 11 11" class="marker cross flowchart-v2" id="diagram_flowchart-v2-crossEnd"><path style="stroke-width: 2; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 1,1 l 9,9 M 10,1 l -9,9"></path></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5.2" refX="-1" viewBox="0 0 11 11" class="marker cross flowchart-v2" id="diagram_flowchart-v2-crossStart"><path style="stroke-width: 2; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 1,1 l 9,9 M 10,1 l -9,9"></path></marker><g class="root"><g class="clusters"></g><g class="edgePaths"><path marker-end="url(#diagram_flowchart-v2-pointEnd)" style="" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" id="L_coordinator_laneA_0" d="M119.184,131.2L141.504,112.633C163.823,94.067,208.462,56.933,246.852,40.324C285.242,23.715,317.382,27.63,333.452,29.588L349.522,31.545"></path><path marker-end="url(#diagram_flowchart-v2-pointEnd)" style="" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" id="L_coordinator_user_1" d="M152.711,153.071L169.443,150.659C186.174,148.247,219.638,143.424,259.585,141.012C299.533,138.6,345.964,138.6,369.179,138.6L392.395,138.6"></path><path marker-end="url(#diagram_flowchart-v2-pointEnd)" style="" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" id="L_coordinator_laneB_2" d="M152.711,184.087L169.443,188.847C186.174,193.608,219.638,203.129,252.442,210.205C285.245,217.282,317.389,221.913,333.461,224.229L349.533,226.545"></path><path marker-end="url(#diagram_flowchart-v2-pointEnd)" style="" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" id="L_laneA_coordinator_3" d="M353.492,50.084L336.76,52.495C320.029,54.906,286.565,59.728,251.019,72.916C215.473,86.104,177.844,107.658,159.03,118.435L140.215,129.212"></path><path marker-end="url(#diagram_flowchart-v2-pointEnd)" style="" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" id="L_laneB_coordinator_4" d="M353.492,246.442L336.76,248.794C320.029,251.145,286.565,255.847,251.206,247.734C215.846,239.62,178.591,218.689,159.963,208.224L141.336,197.759"></path><path marker-end="url(#diagram_flowchart-v2-pointEnd)" style="" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" id="L_watcher_coordinator_5" d="M699.348,260.4L679.216,269.45C659.084,278.5,618.819,296.6,572.494,305.65C526.168,314.7,473.781,314.7,419.539,314.7C365.297,314.7,309.199,314.7,259.011,295.322C208.824,275.945,164.546,237.19,142.407,217.812L120.268,198.434"></path><path marker-end="url(#diagram_flowchart-v2-pointEnd)" style="" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" id="L_laneA_watcher_6" d="M489.297,40.3L504.173,40.3C519.049,40.3,548.802,40.3,588.635,68.65C628.468,96.999,678.381,153.698,703.338,182.048L728.295,210.398"></path><path marker-end="url(#diagram_flowchart-v2-pointEnd)" style="" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" id="L_laneB_watcher_7" d="M489.297,236.9L504.173,236.9C519.049,236.9,548.802,236.9,577.888,236.9C606.974,236.9,635.393,236.9,649.603,236.9L663.813,236.9"></path></g><g class="edgeLabels"><g transform="translate(253.1015625, 19.799999237060547)" class="edgeLabel"><g transform="translate(-30.8984375, -10.5)" class="label"><g><rect height="21" width="61.796875" y="0" x="-2" style="" class="background"></rect><text style="" y="-10.1"><tspan dy="1.1em" y="-0.1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">prompts</tspan></tspan></text></g></g></g><g transform="translate(253.1015625, 138.5999984741211)" class="edgeLabel"><g transform="translate(-75.390625, -19.299999237060547)" class="label"><g><rect height="38.599998474121094" width="150.78125" y="0" x="-2" style="" class="background"></rect><text style="" y="-10.1"><tspan dy="1.1em" y="-0.1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">open</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> decisions,</tspan></tspan><tspan dy="1.1em" y="1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">one</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> approval</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> per</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> PR</tspan></tspan></text></g></g></g><g transform="translate(253.1015625, 212.64999771118164)" class="edgeLabel"><g transform="translate(-30.8984375, -10.5)" class="label"><g><rect height="21" width="61.796875" y="0" x="-2" style="" class="background"></rect><text style="" y="-10.1"><tspan dy="1.1em" y="-0.1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">prompts</tspan></tspan></text></g></g></g><g transform="translate(253.1015625, 64.54999923706055)" class="edgeLabel"><g transform="translate(-62.31640625, -10.5)" class="label"><g><rect height="21" width="124.6328125" y="0" x="-2" style="" class="background"></rect><text style="" y="-10.1"><tspan dy="1.1em" y="-0.1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">questions</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> as</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> text</tspan></tspan></text></g></g></g><g transform="translate(253.1015625, 260.5499973297119)" class="edgeLabel"><g transform="translate(-62.31640625, -10.5)" class="label"><g><rect height="21" width="124.6328125" y="0" x="-2" style="" class="background"></rect><text style="" y="-10.1"><tspan dy="1.1em" y="-0.1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">questions</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> as</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> text</tspan></tspan></text></g></g></g><g transform="translate(421.39453125, 314.6999969482422)" class="edgeLabel"><g transform="translate(-25.1796875, -10.5)" class="label"><g><rect height="21" width="50.359375" y="0" x="-3" style="" class="background"></rect><text style="" y="-10.1"><tspan dy="1.1em" y="-0.1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">wakes</tspan></tspan></text></g></g></g><g transform="translate(578.5546875, 40.29999923706055)" class="edgeLabel"><g transform="translate(-64.2578125, -10.5)" class="label"><g><rect height="21" width="128.515625" y="0" x="-2" style="" class="background"></rect><text style="" y="-10.1"><tspan dy="1.1em" y="-0.1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">state,</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> PR,</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> checks</tspan></tspan></text></g></g></g><g transform="translate(578.5546875, 236.89999771118164)" class="edgeLabel"><g transform="translate(-64.2578125, -10.5)" class="label"><g><rect height="21" width="128.515625" y="0" x="-2" style="" class="background"></rect><text style="" y="-10.1"><tspan dy="1.1em" y="-0.1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">state,</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> PR,</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> checks</tspan></tspan></text></g></g></g></g><g class="nodes"><g transform="translate(80.35546875, 163.49999809265137)" id="flowchart-coordinator-0" class="node default"><rect height="64.5999984741211" width="144.7109375" y="-32.29999923706055" x="-72.35546875" style="" class="basic label-container"></rect><g transform="translate(0, -17.299999237060547)" style="" class="label"><rect></rect><g><rect style="stroke: none" class="background"></rect><text style="" y="-10.1"><tspan dy="1.1em" y="-0.1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">Coordinator</tspan></tspan><tspan dy="1.1em" y="1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">/orchestrate</tspan></tspan></text></g></g></g><g transform="translate(421.39453125, 40.29999923706055)" id="flowchart-laneA-1" class="node default"><rect height="64.5999984741211" width="135.8046875" y="-32.29999923706055" x="-67.90234375" style="" class="basic label-container"></rect><g transform="translate(0, -17.299999237060547)" style="" class="label"><rect></rect><g><rect style="stroke: none" class="background"></rect><text style="" y="-10.1"><tspan dy="1.1em" y="-0.1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">Lane</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> a</tspan></tspan><tspan dy="1.1em" y="1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">worktree</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> a</tspan></tspan></text></g></g></g><g transform="translate(421.39453125, 138.5999984741211)" id="flowchart-user-3" class="node default"><rect height="32" width="50" y="-16" x="-25" ry="16" rx="16" style="" class="basic label-container"></rect><g transform="translate(0, -8.5)" style="" class="label"><rect></rect><g><rect style="stroke: none" class="background"></rect><text style="" y="-10.1"><tspan dy="1.1em" y="-0.1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">You</tspan></tspan></text></g></g></g><g transform="translate(421.39453125, 236.89999771118164)" id="flowchart-laneB-5" class="node default"><rect height="64.5999984741211" width="135.8046875" y="-32.29999923706055" x="-67.90234375" style="" class="basic label-container"></rect><g transform="translate(0, -17.299999237060547)" style="" class="label"><rect></rect><g><rect style="stroke: none" class="background"></rect><text style="" y="-10.1"><tspan dy="1.1em" y="-0.1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">Lane</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> b</tspan></tspan><tspan dy="1.1em" y="1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">worktree</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> b</tspan></tspan></text></g></g></g><g transform="translate(751.625, 236.89999771118164)" id="flowchart-watcher-10" class="node default"><rect height="47" width="167.625" y="-23.5" x="-83.8125" style="" class="basic label-container"></rect><g transform="translate(0, -8.5)" style="" class="label"><rect></rect><g><rect style="stroke: none" class="background"></rect><text style="" y="-10.1"><tspan dy="1.1em" y="-0.1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">jh</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> watch</tspan></tspan></text></g></g></g></g></g></g></svg>
|
package/docs/skills.mmd
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
flowchart LR
|
|
2
|
+
grill["/grill<br/>settles decisions"] -- decision rows --> plan["/plan<br/>writes the plan"]
|
|
3
|
+
plan -- phases, Writes,<br/>model per phase --> orchestrate["/orchestrate<br/>lanes in herdr"]
|
|
4
|
+
plan -- one phase --> implement["/implement<br/>builds, ticks"]
|
|
5
|
+
orchestrate -- each lane runs --> implement
|
|
6
|
+
implement --> precommit["/pre-commit<br/>jh check"]
|
|
7
|
+
precommit --> review["/review"]
|
|
8
|
+
precommit --> spec["spec-review"]
|
|
9
|
+
precommit -. routed by path .-> routed["uncle-bob · security-audit · devops"]
|
|
10
|
+
diagnose["/diagnose<br/>bug, flaky failure"] -- red command --> implement
|
package/docs/skills.svg
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg aria-roledescription="flowchart-v2" role="graphics-document document" viewBox="0 0 1784.4765625 274.6000061035156" style="max-width: 1784.4765625px;" class="flowchart" xmlns="http://www.w3.org/2000/svg" width="100%" id="diagram"><style>#diagram{font-family:Helvetica,Arial,sans-serif;font-size:16px;fill:#000000;}#diagram .error-icon{fill:#552222;}#diagram .error-text{fill:#552222;stroke:#552222;}#diagram .edge-thickness-normal{stroke-width:1px;}#diagram .edge-thickness-thick{stroke-width:3.5px;}#diagram .edge-pattern-solid{stroke-dasharray:0;}#diagram .edge-thickness-invisible{stroke-width:0;fill:none;}#diagram .edge-pattern-dashed{stroke-dasharray:3;}#diagram .edge-pattern-dotted{stroke-dasharray:2;}#diagram .marker{fill:#666;stroke:#666;}#diagram .marker.cross{stroke:#666;}#diagram svg{font-family:Helvetica,Arial,sans-serif;font-size:16px;}#diagram p{margin:0;}#diagram .label{font-family:Helvetica,Arial,sans-serif;color:#000000;}#diagram .cluster-label text{fill:#333;}#diagram .cluster-label span{color:#333;}#diagram .cluster-label span p{background-color:transparent;}#diagram .label text,#diagram span{fill:#000000;color:#000000;}#diagram .node rect,#diagram .node circle,#diagram .node ellipse,#diagram .node polygon,#diagram .node path{fill:#eee;stroke:#999;stroke-width:1px;}#diagram .rough-node .label text,#diagram .node .label text,#diagram .image-shape .label,#diagram .icon-shape .label{text-anchor:middle;}#diagram .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#diagram .rough-node .label,#diagram .node .label,#diagram .image-shape .label,#diagram .icon-shape .label{text-align:center;}#diagram .node.clickable{cursor:pointer;}#diagram .root .anchor path{fill:#666!important;stroke-width:0;stroke:#666;}#diagram .arrowheadPath{fill:#333333;}#diagram .edgePath .path{stroke:#666;stroke-width:2.0px;}#diagram .flowchart-link{stroke:#666;fill:none;}#diagram .edgeLabel{background-color:white;text-align:center;}#diagram .edgeLabel p{background-color:white;}#diagram .edgeLabel rect{opacity:0.5;background-color:white;fill:white;}#diagram .labelBkg{background-color:rgba(255, 255, 255, 0.5);}#diagram .cluster rect{fill:hsl(0, 0%, 98.9215686275%);stroke:#707070;stroke-width:1px;}#diagram .cluster text{fill:#333;}#diagram .cluster span{color:#333;}#diagram div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:Helvetica,Arial,sans-serif;font-size:12px;background:hsl(-160, 0%, 93.3333333333%);border:1px solid #707070;border-radius:2px;pointer-events:none;z-index:100;}#diagram .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#000000;}#diagram rect.text{fill:none;stroke-width:0;}#diagram .icon-shape,#diagram .image-shape{background-color:white;text-align:center;}#diagram .icon-shape p,#diagram .image-shape p{background-color:white;padding:2px;}#diagram .icon-shape rect,#diagram .image-shape rect{opacity:0.5;background-color:white;fill:white;}#diagram :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style><g><marker orient="auto" markerHeight="8" markerWidth="8" markerUnits="userSpaceOnUse" refY="5" refX="5" viewBox="0 0 10 10" class="marker flowchart-v2" id="diagram_flowchart-v2-pointEnd"><path style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 0 0 L 10 5 L 0 10 z"></path></marker><marker orient="auto" markerHeight="8" markerWidth="8" markerUnits="userSpaceOnUse" refY="5" refX="4.5" viewBox="0 0 10 10" class="marker flowchart-v2" id="diagram_flowchart-v2-pointStart"><path style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 0 5 L 10 10 L 10 0 z"></path></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5" refX="11" viewBox="0 0 10 10" class="marker flowchart-v2" id="diagram_flowchart-v2-circleEnd"><circle style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" r="5" cy="5" cx="5"></circle></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5" refX="-1" viewBox="0 0 10 10" class="marker flowchart-v2" id="diagram_flowchart-v2-circleStart"><circle style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" r="5" cy="5" cx="5"></circle></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5.2" refX="12" viewBox="0 0 11 11" class="marker cross flowchart-v2" id="diagram_flowchart-v2-crossEnd"><path style="stroke-width: 2; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 1,1 l 9,9 M 10,1 l -9,9"></path></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5.2" refX="-1" viewBox="0 0 11 11" class="marker cross flowchart-v2" id="diagram_flowchart-v2-crossStart"><path style="stroke-width: 2; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 1,1 l 9,9 M 10,1 l -9,9"></path></marker><g class="root"><g class="clusters"></g><g class="edgePaths"><path marker-end="url(#diagram_flowchart-v2-pointEnd)" style="" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" id="L_grill_plan_0" d="M185.406,80L197.984,80C210.563,80,235.719,80,260.208,80C284.698,80,308.521,80,320.432,80L332.344,80"></path><path marker-end="url(#diagram_flowchart-v2-pointEnd)" style="" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" id="L_plan_orchestrate_1" d="M500.516,98.924L514.957,102.253C529.398,105.583,558.281,112.241,588.079,115.571C617.878,118.9,648.591,118.9,663.948,118.9L679.305,118.9"></path><path marker-end="url(#diagram_flowchart-v2-pointEnd)" style="" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" id="L_plan_implement_2" d="M500.516,61.076L514.957,57.747C529.398,54.417,558.281,47.759,601.882,44.429C645.482,41.1,703.799,41.1,760.924,41.1C818.049,41.1,873.982,41.1,917.673,50.67C961.365,60.24,992.815,79.38,1008.541,88.95L1024.266,98.521"></path><path marker-end="url(#diagram_flowchart-v2-pointEnd)" style="" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" id="L_orchestrate_implement_3" d="M840.93,118.9L855.76,118.9C870.591,118.9,900.253,118.9,927.668,120.068C955.084,121.236,980.254,123.572,992.838,124.74L1005.423,125.908"></path><path marker-end="url(#diagram_flowchart-v2-pointEnd)" style="" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" id="L_implement_precommit_4" d="M1152.109,132.9L1156.276,132.9C1160.443,132.9,1168.776,132.9,1176.443,132.9C1184.109,132.9,1191.109,132.9,1194.609,132.9L1198.109,132.9"></path><path marker-end="url(#diagram_flowchart-v2-pointEnd)" style="" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" id="L_precommit_review_5" d="M1338.17,100.6L1356.622,89.083C1375.074,77.567,1411.978,54.533,1454.316,43.017C1496.654,31.5,1544.424,31.5,1568.31,31.5L1592.195,31.5"></path><path marker-end="url(#diagram_flowchart-v2-pointEnd)" style="" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" id="L_precommit_spec_6" d="M1370.727,130.617L1383.753,130.264C1396.779,129.911,1422.831,129.206,1456.852,128.853C1490.874,128.5,1532.865,128.5,1553.86,128.5L1574.855,128.5"></path><path marker-end="url(#diagram_flowchart-v2-pointEnd)" style="" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" id="L_precommit_routed_7" d="M1338.17,165.2L1356.622,176.717C1375.074,188.233,1411.978,211.267,1442.79,222.783C1473.602,234.3,1498.32,234.3,1510.68,234.3L1523.039,234.3"></path><path marker-end="url(#diagram_flowchart-v2-pointEnd)" style="" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" id="L_diagnose_implement_8" d="M850.422,233.5L863.671,233.5C876.919,233.5,903.417,233.5,933.179,222.487C962.942,211.473,995.97,189.446,1012.484,178.433L1028.998,167.419"></path></g><g class="edgeLabels"><g><rect style="stroke: none" class="background"></rect></g><g><rect style="stroke: none" class="background"></rect></g><g><rect style="stroke: none" class="background"></rect></g><g transform="translate(260.875, 80)" class="edgeLabel"><g transform="translate(-50.46875, -10.5)" class="label"><g><rect height="21" width="100.9375" y="0" x="-2" style="" class="background"></rect><text style="" y="-10.1"><tspan dy="1.1em" y="-0.1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">decision</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> rows</tspan></tspan></text></g></g></g><g transform="translate(587.1640625, 118.89999961853027)" class="edgeLabel"><g transform="translate(-61.6484375, -19.299999237060547)" class="label"><g><rect height="38.599998474121094" width="123.296875" y="0" x="-2" style="" class="background"></rect><text style="" y="-10.1"><tspan dy="1.1em" y="-0.1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">phases,</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> Writes,</tspan></tspan><tspan dy="1.1em" y="1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">model</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> per</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> phase</tspan></tspan></text></g></g></g><g transform="translate(762.1171875, 41.10000038146973)" class="edgeLabel"><g transform="translate(-39.421875, -10.5)" class="label"><g><rect height="21" width="78.84375" y="0" x="-2" style="" class="background"></rect><text style="" y="-10.1"><tspan dy="1.1em" y="-0.1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">one</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> phase</tspan></tspan></text></g></g></g><g transform="translate(929.9140625, 118.89999961853027)" class="edgeLabel"><g transform="translate(-54.4921875, -10.5)" class="label"><g><rect height="21" width="108.984375" y="0" x="-2" style="" class="background"></rect><text style="" y="-10.1"><tspan dy="1.1em" y="-0.1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">each</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> lane</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> runs</tspan></tspan></text></g></g></g><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><text y="-10.1"><tspan dy="1.1em" y="-0.1em" x="0" class="text-outer-tspan"></tspan></text></g></g><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><text y="-10.1"><tspan dy="1.1em" y="-0.1em" x="0" class="text-outer-tspan"></tspan></text></g></g><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><text y="-10.1"><tspan dy="1.1em" y="-0.1em" x="0" class="text-outer-tspan"></tspan></text></g></g><g transform="translate(1448.8828125, 234.29999923706055)" class="edgeLabel"><g transform="translate(-53.15625, -10.5)" class="label"><g><rect height="21" width="106.3125" y="0" x="-2" style="" class="background"></rect><text style="" y="-10.1"><tspan dy="1.1em" y="-0.1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">routed</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> by</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> path</tspan></tspan></text></g></g></g><g transform="translate(929.9140625, 233.49999809265137)" class="edgeLabel"><g transform="translate(-50.9140625, -10.5)" class="label"><g><rect height="21" width="101.828125" y="0" x="-2" style="" class="background"></rect><text style="" y="-10.1"><tspan dy="1.1em" y="-0.1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">red</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> command</tspan></tspan></text></g></g></g></g><g class="nodes"><g transform="translate(96.703125, 80)" id="flowchart-grill-0" class="node default"><rect height="64.5999984741211" width="177.40625" y="-32.29999923706055" x="-88.703125" style="" class="basic label-container"></rect><g transform="translate(0, -17.299999237060547)" style="" class="label"><rect></rect><g><rect style="stroke: none" class="background"></rect><text style="" y="-10.1"><tspan dy="1.1em" y="-0.1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">/grill</tspan></tspan><tspan dy="1.1em" y="1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">settles</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> decisions</tspan></tspan></text></g></g></g><g transform="translate(418.4296875, 80)" id="flowchart-plan-1" class="node default"><rect height="64.5999984741211" width="164.171875" y="-32.29999923706055" x="-82.0859375" style="" class="basic label-container"></rect><g transform="translate(0, -17.299999237060547)" style="" class="label"><rect></rect><g><rect style="stroke: none" class="background"></rect><text style="" y="-10.1"><tspan dy="1.1em" y="-0.1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">/plan</tspan></tspan><tspan dy="1.1em" y="1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">writes</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> the</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> plan</tspan></tspan></text></g></g></g><g transform="translate(762.1171875, 118.89999961853027)" id="flowchart-orchestrate-3" class="node default"><rect height="64.5999984741211" width="157.625" y="-32.29999923706055" x="-78.8125" style="" class="basic label-container"></rect><g transform="translate(0, -17.299999237060547)" style="" class="label"><rect></rect><g><rect style="stroke: none" class="background"></rect><text style="" y="-10.1"><tspan dy="1.1em" y="-0.1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">/orchestrate</tspan></tspan><tspan dy="1.1em" y="1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">lanes</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> in</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> herdr</tspan></tspan></text></g></g></g><g transform="translate(1080.7578125, 132.89999961853027)" id="flowchart-implement-5" class="node default"><rect height="64.5999984741211" width="142.703125" y="-32.29999923706055" x="-71.3515625" style="" class="basic label-container"></rect><g transform="translate(0, -17.299999237060547)" style="" class="label"><rect></rect><g><rect style="stroke: none" class="background"></rect><text style="" y="-10.1"><tspan dy="1.1em" y="-0.1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">/implement</tspan></tspan><tspan dy="1.1em" y="1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">builds,</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> ticks</tspan></tspan></text></g></g></g><g transform="translate(1286.41796875, 132.89999961853027)" id="flowchart-precommit-9" class="node default"><rect height="64.5999984741211" width="168.6171875" y="-32.29999923706055" x="-84.30859375" style="" class="basic label-container"></rect><g transform="translate(0, -17.299999237060547)" style="" class="label"><rect></rect><g><rect style="stroke: none" class="background"></rect><text style="" y="-10.1"><tspan dy="1.1em" y="-0.1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">/pre-commit</tspan></tspan><tspan dy="1.1em" y="1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">jh</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> check</tspan></tspan></text></g></g></g><g transform="translate(1651.7578125, 31.5)" id="flowchart-review-11" class="node default"><rect height="47" width="111.125" y="-23.5" x="-55.5625" style="" class="basic label-container"></rect><g transform="translate(0, -8.5)" style="" class="label"><rect></rect><g><rect style="stroke: none" class="background"></rect><text style="" y="-10.1"><tspan dy="1.1em" y="-0.1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">/review</tspan></tspan></text></g></g></g><g transform="translate(1651.7578125, 128.5)" id="flowchart-spec-13" class="node default"><rect height="47" width="145.8046875" y="-23.5" x="-72.90234375" style="" class="basic label-container"></rect><g transform="translate(0, -8.5)" style="" class="label"><rect></rect><g><rect style="stroke: none" class="background"></rect><text style="" y="-10.1"><tspan dy="1.1em" y="-0.1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">spec-review</tspan></tspan></text></g></g></g><g transform="translate(1651.7578125, 234.29999923706055)" id="flowchart-routed-15" class="node default"><rect height="64.5999984741211" width="249.4375" y="-32.29999923706055" x="-124.71875" style="" class="basic label-container"></rect><g transform="translate(0, -17.299999237060547)" style="" class="label"><rect></rect><g><rect style="stroke: none" class="background"></rect><text style="" y="-10.1"><tspan dy="1.1em" y="-0.1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">uncle-bob</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> ·</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> security-audit</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> ·</tspan></tspan><tspan dy="1.1em" y="1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">devops</tspan></tspan></text></g></g></g><g transform="translate(762.1171875, 233.49999809265137)" id="flowchart-diagnose-16" class="node default"><rect height="64.5999984741211" width="176.609375" y="-32.29999923706055" x="-88.3046875" style="" class="basic label-container"></rect><g transform="translate(0, -17.299999237060547)" style="" class="label"><rect></rect><g><rect style="stroke: none" class="background"></rect><text style="" y="-10.1"><tspan dy="1.1em" y="-0.1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">/diagnose</tspan></tspan><tspan dy="1.1em" y="1em" x="0" class="text-outer-tspan"><tspan font-weight="normal" class="text-inner-tspan" font-style="normal">bug,</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> flaky</tspan><tspan font-weight="normal" class="text-inner-tspan" font-style="normal"> failure</tspan></tspan></text></g></g></g></g></g></g></svg>
|