okstra 0.36.0 → 0.36.2

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.
Files changed (45) hide show
  1. package/README.kr.md +3 -5
  2. package/README.md +3 -5
  3. package/docs/project-structure-overview.md +2 -7
  4. package/docs/superpowers/plans/2026-05-24-implementation-lead-context-slimming.md +1700 -0
  5. package/package.json +1 -1
  6. package/runtime/BUILD.json +2 -2
  7. package/runtime/agents/SKILL.md +18 -5
  8. package/runtime/agents/workers/claude-worker.md +5 -6
  9. package/runtime/agents/workers/codex-worker.md +10 -9
  10. package/runtime/agents/workers/gemini-worker.md +7 -6
  11. package/runtime/agents/workers/report-writer-worker.md +13 -11
  12. package/runtime/prompts/launch.template.md +1 -0
  13. package/runtime/prompts/profiles/_implementation-deliverable.md +53 -0
  14. package/runtime/prompts/profiles/_implementation-executor.md +60 -0
  15. package/runtime/prompts/profiles/_implementation-verifier.md +76 -0
  16. package/runtime/prompts/profiles/implementation.md +27 -134
  17. package/runtime/python/okstra_ctl/paths.py +3 -0
  18. package/runtime/python/okstra_ctl/render.py +19 -5
  19. package/runtime/python/okstra_ctl/render_final_report.py +4 -1
  20. package/runtime/python/okstra_ctl/run.py +7 -1
  21. package/runtime/python/okstra_ctl/session.py +65 -7
  22. package/runtime/python/okstra_token_usage/report.py +6 -2
  23. package/runtime/skills/okstra-brief/SKILL.md +2 -211
  24. package/runtime/skills/okstra-inspect/SKILL.md +581 -0
  25. package/runtime/skills/okstra-run/SKILL.md +3 -3
  26. package/runtime/skills/okstra-schedule/SKILL.md +10 -153
  27. package/runtime/skills/okstra-setup/SKILL.md +1 -1
  28. package/runtime/skills/okstra-team-contract/SKILL.md +15 -106
  29. package/runtime/templates/reports/brief.template.md +204 -0
  30. package/runtime/templates/reports/schedule.template.md +12 -3
  31. package/runtime/templates/worker-prompt-preamble.md +108 -0
  32. package/src/uninstall.mjs +7 -3
  33. package/runtime/prompts/profiles/kr/_common-contract.md +0 -92
  34. package/runtime/prompts/profiles/kr/error-analysis.md +0 -36
  35. package/runtime/prompts/profiles/kr/final-verification.md +0 -48
  36. package/runtime/prompts/profiles/kr/implementation-planning.md +0 -90
  37. package/runtime/prompts/profiles/kr/implementation.md +0 -144
  38. package/runtime/prompts/profiles/kr/improvement-discovery.md +0 -42
  39. package/runtime/prompts/profiles/kr/release-handoff.md +0 -104
  40. package/runtime/prompts/profiles/kr/requirements-discovery.md +0 -42
  41. package/runtime/skills/okstra-history/SKILL.md +0 -165
  42. package/runtime/skills/okstra-logs/SKILL.md +0 -173
  43. package/runtime/skills/okstra-report-finder/SKILL.md +0 -111
  44. package/runtime/skills/okstra-status/SKILL.md +0 -246
  45. package/runtime/skills/okstra-time-summary/SKILL.md +0 -172
@@ -676,218 +676,9 @@ Use the same template per brief file. In tracker mode producing a parent
676
676
  plus N children, you write **N+1 files** (each carries only its own Source
677
677
  Material).
678
678
 
679
- Use this exact template. Leave a section's body as `_(none)_` rather than
680
- fabricating content. (The outer fence uses 4 backticks so it does not
681
- collide with the inner 3-backtick code block.)
679
+ [`templates/reports/brief.template.md`](../../templates/reports/brief.template.md) is the byte-for-byte SSOT for the brief shape — frontmatter keys, top-header blockquote, section ordering, and inline `<!-- author guidance -->` HTML comments. Render that file with the per-brief values substituted; leave any section's body as `_(none)_` rather than fabricating content. Preserve the template's HTML comments verbatim (they are part of the contract) but do NOT promote them to body prose.
682
680
 
683
- ````markdown
684
- ---
685
- type: brief
686
- brief-id: <ticket-id>-<file-title> # equals the filename stem
687
- parent-id: self # always `self` at root; child briefs use parent's brief-id
688
- ticket-id: <LIN-1234 | PROJ-42 | gh-repo-123 | notion-abcdef12 | "">
689
- source-type: <file | linear | jira | github | notion | url | user-input>
690
- task-group: <task-group>
691
- depth: 0 # 0=parent/single, 1=child, 2=grandchild, ...
692
- created: <YYYY-MM-DD>
693
- generator: okstra-brief
694
- reporter-confirmations: <complete | partial | pending | skipped> # set by Step 6.5
695
- # codebase-scan variant frontmatter (omit for reporter-input briefs):
696
- scope: <reporter-input | codebase> # 'codebase' for codebase-scan variant; omit for reporter-input variant
697
- priority-lenses: [] # codebase-scan only: lens enum subset, size 1..4
698
- scan-scope: [] # codebase-scan only: 1+ paths
699
- out-of-scope: [] # codebase-scan only: optional
700
- candidate-cap: 8 # codebase-scan only: 1..12, default 8
701
- ---
702
-
703
- # Task Brief: <task_group>/<filename-without-ext>
704
-
705
- > Generated: okstra-brief · <YYYY-MM-DD>
706
- > Source type: <file | linear | jira | github | notion | url | user-input>
707
- > Tracker key (if any): <LIN-1234 | PROJ-42 | gh-repo-123 | notion-abcdef12>
708
- > Parent brief (child briefs only): <relative path>
709
- > Recommended next phase: <requirements-discovery | error-analysis> ← from Step 6
710
- > Handoff contract: see `prompts/profiles/_common-contract.md` § "Brief handoff contract"
711
-
712
- ## Source Material
713
-
714
- <!-- author guidance — strip out at fill-in time:
715
- Paste each source separately and as-is. No paraphrasing, summarizing, or
716
- restructuring. Format conversion (e.g. Jira ADF → Markdown) is allowed and
717
- must be annotated in the header meta. Heading was originally
718
- "Source Material (verbatim — do not modify)" — the parenthetical is a
719
- reviewer note, not body text.
720
- -->
721
-
722
- ### Source 1 — <type: file | linear | jira | github | notion | url | user-input>
723
-
724
- - ref: <abs file path | LIN-1234 | https://... | "conversation synthesis">
725
- - fetched-via: <Read | mcp__linear__getIssue | mcp__notion__... | gh issue view | WebFetch | user-paste>
726
- - fetched-at: <YYYY-MM-DD HH:MM>
727
- - format: <as-is | "Jira ADF → Markdown (semantics preserved)" | "tool-truncated — missing body requested from reporter">
728
-
729
- ```
730
- <Paste the raw source here without changing a single character.>
731
- ```
732
-
733
- <!-- Repeat `### Source N — …` blocks as needed. -->
734
-
735
- ## Context
736
-
737
- <Background / scope / why now. If self-evident from Source Material, quote
738
- it briefly and stop. Use the blockquote below when augmentation is needed.>
739
-
740
- > augmented: <label> — <Interpretation added by the skill or user.>
741
-
742
- <!-- label MUST be one of: `evidence-link` / `format-conversion` /
743
- `terminology-mapping` / `intent-inference`. Do NOT add any extra
744
- interpretation outside the `> augmented:` blockquote. -->
745
-
746
- ## Problem / Symptom
747
-
748
- <Current state. For bugs: repro / observed / expected. For greenfield: gap
749
- between current and desired.>
750
-
751
- <!-- Same source-quote + `> augmented:` rule as the Context section. -->
752
-
753
- ## Desired Outcome
754
-
755
- <Shape of success.>
756
-
757
- <!-- Do NOT prescribe a solution — that belongs to implementation-planning. -->
758
-
759
- ## Constraints
760
-
761
- <Deadlines, compatibility, technical/operational limits. Use _(none)_ if
762
- none.>
763
-
764
- ## Scan Scope
765
-
766
- <!-- codebase-scan variant only — omit this section for reporter-input briefs. -->
767
- <!-- Author guidance: one bullet per `scan-scope` path with a short description of what lives there. -->
768
-
769
- - <path>: <one-line description of contents / responsibility>
770
-
771
- ## Priority Lenses
772
-
773
- <!-- codebase-scan variant only — omit this section for reporter-input briefs. -->
774
- <!-- Author guidance: one bullet per priority lens explaining why it is a priority for THIS scope. -->
775
-
776
- - <lens>: <short rationale tying this lens to the scope's risk surface>
777
-
778
- ## Related Artifacts
779
-
780
- - <file path / URL / issue / prior task-key>
781
-
782
- ## Open Questions
783
-
784
- <!-- author guidance — strip out at fill-in time:
785
- Prefix every row with one of these signals so the next phase knows how to
786
- handle it. Free-form rows are allowed only as `general:`.
787
-
788
- Allowed signals:
789
- - `general: <unresolved question the user flagged>`
790
- - `terminology: <reporter word> — needs canonical resolution against
791
- <PROJECT_ROOT>/.project-docs/okstra/glossary.md`
792
- - `intent-check: <restated inference> — confirm with reporter`
793
- (auto-paired with every `intent-inference` augmentation)
794
- - `conversion-block: <reporter statement> — could not be mapped to project
795
- vocabulary; reporter query required`
796
- - `adr-candidate: <topic>` — signal only; `implementation-planning`
797
- evaluates and, if accepted, drafts a decision file at
798
- `<PROJECT_ROOT>/.project-docs/okstra/decisions/<NNNN>-<slug>.md`.
799
-
800
- Use `_(none)_` only if every signal is empty. `intent-check:` and
801
- `conversion-block:` rows that are answered in Step 6.5 are NOT removed
802
- from this list — they receive a `[CONFIRMED <YYYY-MM-DD> → RC-N]`
803
- marker that links to the corresponding entry under
804
- `## Reporter Confirmations`.
805
- -->
806
-
807
- - <fill in one row per signal, or replace with `_(none)_`>
808
-
809
- ## Reporter Confirmations
810
-
811
- <!-- Populated by Step 6.5. Each subsection records one reporter answer
812
- verbatim, with a link back to the originating `Open Questions` row. -->
813
-
814
- _(none — pending or skipped)_
815
-
816
- <!-- when populated, the shape is:
817
- ### RC-1 — <intent-check: or conversion-block: row id / topic>
818
- - asked: <YYYY-MM-DD HH:MM>
819
- - linked-row: `<exact Open Questions row text>`
820
- - answer (verbatim):
821
-
822
- > <reporter's answer, byte-for-byte>
823
- -->
824
-
825
- ## Augmentation
826
-
827
- <!-- author guidance — strip out at fill-in time:
828
- Cross-references / interpretation / context added by the user or skill that
829
- is not in the original source. May be empty. Keep this section visually
830
- separated from Source Material — never inline it inside Source Material.
831
-
832
- Every entry below must start with one of the four labels:
833
- `evidence-link` / `format-conversion` / `terminology-mapping` /
834
- `intent-inference`. Unlabelled entries are forbidden.
835
- -->
836
-
837
- ### Domain alignment
838
-
839
- <!-- author guidance — strip out at fill-in time:
840
- Observations from Step 3b and the outcome of Step 4.5 (glossary applied
841
- vs. skipped). The actual glossary edits live in
842
- `<PROJECT_ROOT>/.project-docs/okstra/glossary.md` when applied; this
843
- section records what happened. Decision candidates are NOT recorded here —
844
- they flow through `Open Questions` as `adr-candidate:` rows for
845
- `implementation-planning` to evaluate (and, if accepted, draft into
846
- `<PROJECT_ROOT>/.project-docs/okstra/decisions/`).
847
-
848
- Allowed entry shapes:
849
- - `terminology-mapping: <reporter word> → <okstra glossary canonical>` —
850
- routine glossary alignment, paired with `terminology:` in Open Questions
851
- when unresolved.
852
- - `terminology-mapping: applied glossary: <term> → <PROJECT_ROOT>/.project-docs/okstra/glossary.md`
853
- - `terminology-mapping: skipped glossary: <term> = <definition>` —
854
- Step 4.5 outcomes.
855
- Use `_(none)_` if every alignment entry is empty.
856
- -->
857
-
858
- - <fill in one entry per alignment, or replace with `_(none)_`>
859
-
860
- ### Evidence links (file / symbol resolution)
861
-
862
- <!-- Allowed entry shapes:
863
- `evidence-link: <reporter phrase> → <relative path>:<line>` or
864
- `evidence-link: <reporter phrase> → <symbol> in <relative path>`.
865
- Use `_(none)_` if none. -->
866
-
867
- - <fill in one entry per link, or replace with `_(none)_`>
868
-
869
- ### Intent inferences
870
-
871
- <!-- Every entry here is an unverified hypothesis. Each one MUST have a
872
- paired `intent-check:` row under Open Questions.
873
-
874
- Allowed entry shape:
875
- `intent-inference: <reporter phrase> → <qualitative restatement>`
876
- (qualitative only — never invent numeric thresholds).
877
- Use `_(none)_` if none. -->
878
-
879
- - <fill in one entry per inference, or replace with `_(none)_`>
880
-
881
- ### Format conversions
882
-
883
- <!-- Allowed entry shape:
884
- `format-conversion: <ref> — <e.g. Jira ADF → Markdown, semantics preserved>`.
885
- Use `_(none)_` if none. -->
886
-
887
- - <fill in one entry per conversion, or replace with `_(none)_`>
888
- ````
889
-
890
- **Variant note:** The template above is the canonical reporter-input shape. For the codebase-scan variant (`scope: codebase` in frontmatter), OMIT the `## Source Material` and `## Problem / Symptom` headings entirely — do NOT include them with `_(none)_` bodies. Instead, ADD `## Scan Scope` and `## Priority Lenses` sections (already present in the template above, marked with HTML comments). The remaining sections (Context / Desired Outcome / Constraints / Related Artifacts / Open Questions / Reporter Confirmations / Augmentation) apply to both variants.
681
+ **Variant note:** The template file is the canonical reporter-input shape. For the codebase-scan variant (`scope: codebase` in frontmatter), OMIT the `## Source Material` and `## Problem / Symptom` headings entirely — do NOT include them with `_(none)_` bodies. Instead, KEEP the `## Scan Scope` and `## Priority Lenses` sections (already present in the template file, marked with HTML comments). The remaining sections (Context / Desired Outcome / Constraints / Related Artifacts / Open Questions / Reporter Confirmations / Augmentation) apply to both variants.
891
682
 
892
683
  ### Required sections by variant
893
684