jhste-skills 0.5.2 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,23 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.6.0 - 2026-07-13
6
+
7
+ ### Added
8
+ - Added `jhste-grill` for focused, one-question-at-a-time decision interviews.
9
+ - Added `jhste-to-tickets` for GitHub-native parent issues, sub-issues, and dependency graphs.
10
+ - Added `jhste-domain-modeling` for domain terminology, concept boundaries, glossaries, and selective ADR capture.
11
+ - Added Codex UI metadata and explicit implicit-invocation policy for every bundled skill.
12
+
13
+ ### Changed
14
+ - Reworked `jhste-coding` from a SOLID tutorial into a lean outcome, contract, autonomy, and validation discipline for GPT-5.6.
15
+ - Expanded the npm package, documentation, and validation from one skill to four independent skills.
16
+ - Replaced the recommendation to install Matt Pocock workflows separately with a curated JHSTE-owned workflow set.
17
+
18
+ ### Removed
19
+ - Removed SOLID-first branding and exhaustive SOLID restatement from the coding skill.
20
+ - Kept TDD, code review, debugging-process, Wayfinder, and architecture-audit workflows outside the package.
21
+
5
22
  ## 0.5.2 - 2026-07-12
6
23
 
7
24
  ### Changed
package/README.en.md CHANGED
@@ -2,50 +2,52 @@
2
2
 
3
3
  [한국어](README.md) | ENG
4
4
 
5
- A tiny personal coding-discipline skill.
5
+ A personal engineering skill set maintained around GPT-5.6's outcome-first, lean-prompt guidance. Each skill works independently and may be selected implicitly when the user's intent matches its narrow trigger.
6
6
 
7
- This repository provides one skill:
7
+ ## Skills
8
8
 
9
- - `jhste-coding`: a lightweight SOLID-first coding discipline for repository code edits.
9
+ - **`jhste-coding`** implements features, fixes bugs, and refactors code with a small change and relevant validation.
10
+ - **`jhste-grill`** — sharpens a plan or design through one consequential decision question at a time.
11
+ - **`jhste-to-tickets`** — splits defined work into GitHub parent/sub-issues with native dependencies.
12
+ - **`jhste-domain-modeling`** — clarifies domain terms, boundaries, and relationships, and records them in a glossary or ADR when requested.
10
13
 
11
- It does not vendor workflow skills. Use `mattpocock/skills` separately for broader planning, issue, PRD, debugging, architecture, or review workflows.
14
+ The skills do not require or automatically call one another. A request may use more than one when it contains multiple intents. For example, invoke `jhste-grill` with `jhste-domain-modeling` to interview through a design and record the domain terms that become settled.
15
+
16
+ ## Behavioral boundaries
17
+
18
+ - `jhste-coding` applies only when repository code must change.
19
+ - `jhste-grill` applies when the user wants an interview or decision stress test; ordinary ambiguity alone must not start a long interview.
20
+ - `jhste-to-tickets` drafts by default. It writes to GitHub only when the user explicitly asks to create, post, or publish the issues.
21
+ - `jhste-domain-modeling` analyzes and proposes by default. It edits repository documentation only when the user asks to record or apply the decisions.
22
+
23
+ This package intentionally omits TDD, code-review, debugging-process, Wayfinder, and architecture-audit workflows. It favors the model's baseline capabilities and repository CI or guidance, adding another skill only after a repeated real failure justifies it.
12
24
 
13
25
  ## Install user-wide from npm
14
26
 
15
- This package does not provide a CLI. The npm package is a small distribution bundle for the skill file.
27
+ This package has no CLI. It distributes the four skills and their Codex metadata.
16
28
 
17
29
  ```sh
18
30
  npm install -g jhste-skills
19
31
  mkdir -p "$HOME/.agents/skills"
20
- cp -R "$(npm root -g)/jhste-skills/skills/jhste-coding" "$HOME/.agents/skills/"
32
+ cp -R "$(npm root -g)/jhste-skills/skills/." "$HOME/.agents/skills/"
21
33
  ```
22
34
 
23
- After updating the npm package, run the copy command again to refresh the installed skill.
35
+ Run the copy command again after updating the npm package. Restart Codex if the updated skills do not appear.
24
36
 
25
37
  ## Install user-wide from the repository
26
38
 
27
39
  ```sh
28
40
  mkdir -p "$HOME/.agents/skills"
29
- cp -R skills/jhste-coding "$HOME/.agents/skills/"
41
+ cp -R skills/. "$HOME/.agents/skills/"
30
42
  ```
31
43
 
32
- For repository-scoped use, copy the skill from this checkout into the target repository's `.agents/skills` directory.
44
+ If another agent expects a different global skills directory, copy the four directories under `skills/` there. This package does not require project-local skill copies.
45
+
46
+ ## Development and validation
33
47
 
34
48
  ```sh
35
- mkdir -p /path/to/target-repo/.agents/skills
36
- cp -R skills/jhste-coding /path/to/target-repo/.agents/skills/
49
+ npm test
50
+ npm pack --dry-run
37
51
  ```
38
52
 
39
- If another agent expects a different skills directory, copy `skills/jhste-coding/` there instead. Restart Codex if the updated skill does not appear.
40
-
41
- ## SOLID-first discipline
42
-
43
- `jhste-coding` keeps code changes small and practical, with SOLID as the main lens:
44
-
45
- - **Single Responsibility:** keep each changed unit centered on one clear job.
46
- - **Open/Closed:** add extension seams only when real variation would otherwise keep changing the same core logic.
47
- - **Liskov Substitution:** preserve caller-facing expectations such as return shape, nullability, errors, and side effects.
48
- - **Interface Segregation:** depend on the smallest useful contract.
49
- - **Dependency Inversion:** keep business rules separate from concrete side effects when it improves clarity.
50
-
51
- The skill is for active coding discipline, not broader process automation or review pipelines.
53
+ Pushing a `v*.*.*` release tag runs GitHub Actions checks and publishes the package through npm trusted publishing.
package/README.md CHANGED
@@ -2,50 +2,52 @@
2
2
 
3
3
  한국어 | [ENG](README.en.md)
4
4
 
5
- 작은 개인용 코딩 규율 스킬입니다.
5
+ GPT-5.6의 outcome-first, lean-prompt 지침에 맞춰 관리하는 개인용 엔지니어링 스킬 모음입니다. 각 스킬은 독립적으로 동작하며, 필요한 경우 Codex가 사용자 의도에 맞춰 자동 호출할 수 있습니다.
6
6
 
7
- 저장소는 하나의 스킬만 제공합니다.
7
+ ## 스킬
8
8
 
9
- - `jhste-coding`: 저장소 코드 수정 적용하는 가벼운 SOLID-first 코딩 규율
9
+ - **`jhste-coding`** 기능 구현, 버그 수정, 리팩터링을 작은 변경과 관련 검증으로 완료합니다.
10
+ - **`jhste-grill`** — 계획이나 설계를 한 번에 하나의 중요한 결정 질문으로 구체화합니다.
11
+ - **`jhste-to-tickets`** — 명확해진 작업을 GitHub 부모/sub-issues와 native dependency로 분할합니다.
12
+ - **`jhste-domain-modeling`** — 도메인 용어, 개념 경계, 관계를 명확히 하고 요청 시 glossary나 ADR에 반영합니다.
10
13
 
11
- 저장소는 workflow 스킬을 vendoring하지 않습니다. 넓은 계획, 이슈, PRD, 디버깅, 아키텍처, 리뷰 workflow에는 `mattpocock/skills`를 별도로 사용하세요.
14
+ 스킬은 서로를 강제로 호출하지 않습니다. 하나의 요청이 여러 의도를 포함하면 함께 사용할 있습니다. 예를 들어 설계 인터뷰 중 확정된 용어를 기록하려면 `jhste-grill`과 `jhste-domain-modeling`을 함께 지정할 수 있습니다.
15
+
16
+ ## 동작 경계
17
+
18
+ - `jhste-coding`은 실제 코드 변경 요청에만 사용합니다.
19
+ - `jhste-grill`은 사용자가 인터뷰나 결정 검증을 원할 때 사용하며, 단순한 모호성만으로 긴 인터뷰를 시작하지 않습니다.
20
+ - `jhste-to-tickets`는 기본적으로 초안을 만듭니다. 사용자가 GitHub에 생성·게시하라고 명시한 경우에만 외부 쓰기를 수행합니다.
21
+ - `jhste-domain-modeling`은 기본적으로 분석하고 제안합니다. 사용자가 기록·반영을 요청한 경우에만 저장소 문서를 수정합니다.
22
+
23
+ TDD, 코드 리뷰, 디버깅 절차, Wayfinder, 아키텍처 감사 workflow는 포함하지 않습니다. 모델의 기본 능력과 저장소 자체의 CI·지침을 우선하고, 반복되는 실제 실패가 확인될 때만 새 스킬을 추가합니다.
12
24
 
13
25
  ## npm으로 사용자 전역 설치
14
26
 
15
- 이 패키지는 CLI를 제공하지 않습니다. npm 패키지는 스킬 파일을 배포하기 위한 작은 번들입니다.
27
+ 이 패키지는 CLI를 제공하지 않습니다. npm 패키지는 스킬과 Codex 메타데이터를 배포하는 번들입니다.
16
28
 
17
29
  ```sh
18
30
  npm install -g jhste-skills
19
31
  mkdir -p "$HOME/.agents/skills"
20
- cp -R "$(npm root -g)/jhste-skills/skills/jhste-coding" "$HOME/.agents/skills/"
32
+ cp -R "$(npm root -g)/jhste-skills/skills/." "$HOME/.agents/skills/"
21
33
  ```
22
34
 
23
- npm 패키지를 업데이트한 뒤에는 복사 명령을 다시 실행해야 설치된 스킬도 갱신됩니다.
35
+ npm 패키지를 업데이트한 뒤에는 복사 명령을 다시 실행해야 설치된 스킬도 갱신됩니다. Codex가 변경된 스킬을 표시하지 않으면 다시 시작하세요.
24
36
 
25
37
  ## 저장소에서 사용자 전역 설치
26
38
 
27
39
  ```sh
28
40
  mkdir -p "$HOME/.agents/skills"
29
- cp -R skills/jhste-coding "$HOME/.agents/skills/"
41
+ cp -R skills/. "$HOME/.agents/skills/"
30
42
  ```
31
43
 
32
- 특정 저장소에서만 사용하려면 저장소를 내려받은 위치에서 대상 저장소의 `.agents/skills`로 복사하세요.
44
+ 다른 에이전트가 별도 전역 skills 디렉터리를 요구하면 `skills/` 아래의 디렉터리를 그 위치로 복사하세요. 이 패키지는 프로젝트별 스킬 복사본을 요구하지 않습니다.
45
+
46
+ ## 개발 및 검증
33
47
 
34
48
  ```sh
35
- mkdir -p /path/to/target-repo/.agents/skills
36
- cp -R skills/jhste-coding /path/to/target-repo/.agents/skills/
49
+ npm test
50
+ npm pack --dry-run
37
51
  ```
38
52
 
39
- 다른 에이전트가 별도 skills 디렉터리를 요구하면 `skills/jhste-coding/`을 위치로 복사하세요. Codex변경된 스킬을 표시하지 않으면 다시 시작하세요.
40
-
41
- ## SOLID-first 규율
42
-
43
- `jhste-coding`은 작은 실제 코드 변경에 SOLID를 주된 렌즈로 적용합니다.
44
-
45
- - **단일 책임:** 변경한 단위가 하나의 분명한 일을 하도록 유지합니다.
46
- - **개방/폐쇄:** 실제 변형이 반복해서 같은 핵심 로직을 바꾸게 만들 때만 확장 지점을 둡니다.
47
- - **리스코프 치환:** 반환 형태, null 가능성, 오류, 부수 효과 같은 호출자 기대를 보존합니다.
48
- - **인터페이스 분리:** 필요한 만큼의 작은 계약에 의존합니다.
49
- - **의존성 역전:** 명확해질 때 비즈니스 규칙과 구체적인 부수 효과를 분리합니다.
50
-
51
- 이 스킬은 코드 작성 중 쓰는 규율이며 더 넓은 프로세스 자동화나 리뷰 파이프라인이 아닙니다.
53
+ 릴리스 태그 `v*.*.*`를 푸시하면 GitHub Actions테스트 npm trusted publishing으로 공개 배포합니다.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "jhste-skills",
3
- "version": "0.5.2",
4
- "description": "A single lightweight SOLID-first coding discipline skill.",
3
+ "version": "0.6.0",
4
+ "description": "A lean GPT-5.6-oriented engineering skill set for coding, decision interviews, GitHub tickets, and domain modeling.",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -9,14 +9,14 @@
9
9
  "url": "git+https://github.com/jhste102lab/jhste-skills.git"
10
10
  },
11
11
  "files": [
12
- "skills/jhste-coding/SKILL.md",
12
+ "skills",
13
13
  "README.md",
14
14
  "README.en.md",
15
15
  "CHANGELOG.md",
16
16
  "LICENSE"
17
17
  ],
18
18
  "scripts": {
19
- "test": "node --input-type=module -e \"import fs from 'node:fs'; const exists = (p) => fs.existsSync(p); const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8')); const skill = 'skills/jhste-coding/SKILL.md'; if (!exists(skill)) throw new Error('missing skill'); const text = fs.readFileSync(skill, 'utf8'); if (!/^---\\nname: jhste-coding\\ndescription: .+\\n---/m.test(text)) throw new Error('invalid skill frontmatter'); const dirs = fs.readdirSync('skills', { withFileTypes: true }).filter((d) => d.isDirectory()).map((d) => d.name); if (dirs.length !== 1 || dirs[0] !== 'jhste-coding') throw new Error('expected only jhste-coding skill'); for (const file of pkg.files) if (!exists(file)) throw new Error('package file does not exist: ' + file); for (const file of ['README.md', 'README.en.md']) { const body = fs.readFileSync(file, 'utf8'); if (!body.includes('jhste-coding')) throw new Error(file + ' does not describe jhste-coding'); for (const match of body.matchAll(/\\[[^\\]]+\\]\\(([^)]+)\\)/g)) { const href = match[1]; if (!/^(https?:|mailto:|#)/.test(href) && !exists(href.split('#')[0])) throw new Error(file + ' has broken link: ' + href); } }\""
19
+ "test": "node scripts/validate-package.mjs"
20
20
  },
21
21
  "engines": {
22
22
  "node": ">=18"
@@ -1,37 +1,33 @@
1
1
  ---
2
2
  name: jhste-coding
3
- description: Use for implementation, bug fixes, and refactors that modify repository code with lightweight SOLID-first discipline. Do not use for read-only review, planning, architecture discussion, or documentation-only work.
3
+ description: Implement features, fix bugs, and refactor repository code with a small, contract-preserving change and relevant validation. Use when the requested outcome requires modifying code. Do not use for read-only analysis, planning, interviewing, issue creation, or domain documentation.
4
4
  ---
5
5
 
6
- # jhste-coding
6
+ # JHSTE Coding
7
7
 
8
- Use this skill to write small, direct, readable code guided primarily by SOLID.
8
+ ## Goal
9
9
 
10
- SOLID is the main discipline. The guardrails below keep the code practical.
10
+ Deliver the requested behavior with the smallest clear change that fits the repository.
11
11
 
12
- ## Core rule
12
+ ## Success criteria
13
13
 
14
- Prefer the smallest clear change that fits the requested problem and keeps the code SOLID-aligned.
14
+ - The requested behavior is implemented without unrelated scope.
15
+ - Existing caller-visible contracts remain intact unless the request changes them.
16
+ - Relevant non-destructive validation passes, or the unverified surface and reason are reported.
17
+ - Uncertain, partial, and failed states are not silently treated as success.
15
18
 
16
- Use SOLID for the current change; speculative architecture, broad refactors, and abstraction layers are outside this skill's purpose.
19
+ ## Working contract
17
20
 
18
- ## SOLID discipline
21
+ Inspect the affected code, repository guidance, and nearby patterns before editing. Reuse established boundaries and abstractions when they fit. Introduce a new abstraction only when the current change has real variation, repeated logic, or a concrete side-effect boundary that becomes clearer by doing so.
19
22
 
20
- - **S Single Responsibility:** keep each changed function, module, or class centered on one clear job. Choose names that make the job easy to see.
21
- - **O — Open/Closed:** add an extension seam when real variation or repeated branching would otherwise keep changing the same core logic. Keep simple branches when they read better.
22
- - **L — Liskov Substitution:** preserve caller-facing expectations: return shape, nullability, errors, side effects, timing assumptions, and documented behavior.
23
- - **I — Interface Segregation:** depend on the smallest useful contract. Prefer narrow parameters over broad objects, global context, or large config bags when only a small slice is needed.
24
- - **D — Dependency Inversion:** keep business rules separate from concrete side effects when that separation makes the code clearer. Make database, network, filesystem, browser, queue, email, payment, clock, environment, and secret boundaries easy to see.
23
+ Treat public return shapes, nullability, errors, side effects, ordering, and documented behavior as contracts. Validate external input at its entry boundary. Keep credentials, sessions, authorization data, and sensitive payloads out of logs and responses.
25
24
 
26
- ## Practical guardrails
25
+ For implementation requests, make in-scope local edits and run the narrowest useful validation without pausing for routine confirmation. Stop before an external write, destructive action, or material expansion of scope unless the user authorized it.
27
26
 
28
- - Interfaces, factories, base classes, dependency containers, and strategy layers fit best when they clarify a real boundary, remove real repeated change, or protect a caller contract.
29
- - Validate external input where it enters the code path.
30
- - Make uncertain, partial, and failed states visible rather than silently treating them as success.
31
- - Keep secrets, tokens, credentials, cookies, authorization headers, sessions, and raw sensitive payloads out of logs and responses.
32
- - After changing code, run the narrowest relevant non-destructive validation. If it cannot run, state why; do not imply the change is verified.
33
- - When adding or changing tests, focus on observable behavior related to the change.
27
+ ## Validation
28
+
29
+ Choose checks that exercise the changed behavior: targeted tests first, then applicable type, lint, build, or smoke checks. Do not add a test at an artificial seam merely to claim coverage. Never imply that a check ran when it did not.
34
30
 
35
31
  ## Final response
36
32
 
37
- Report what changed, what validation ran, and any material caveat; omit unchanged details and generic background.
33
+ Report the outcome, validation performed, and any material caveat or remaining blocker. Omit generic background and unchanged details.
@@ -0,0 +1,7 @@
1
+ interface:
2
+ display_name: "JHSTE Coding"
3
+ short_description: "Make scoped code changes with relevant validation"
4
+ default_prompt: "Use $jhste-coding to implement this change with the smallest clear patch and relevant validation."
5
+
6
+ policy:
7
+ allow_implicit_invocation: true
@@ -0,0 +1,40 @@
1
+ ---
2
+ name: jhste-domain-modeling
3
+ description: Clarify domain terminology, concept boundaries, and relationships, and optionally maintain a project glossary or ADRs. Use when the user asks to define domain language, resolve conflicting terms, build a glossary, model domain concepts, or record a significant domain decision. Do not invoke for ordinary coding, generic architecture discussion, or incidental naming choices.
4
+ ---
5
+
6
+ # JHSTE Domain Modeling
7
+
8
+ ## Goal
9
+
10
+ Establish precise shared language that matches the intended domain and the behavior implemented by the code.
11
+
12
+ ## Investigate
13
+
14
+ Read existing glossary, context-map, ADR, issue, and code conventions before proposing terms. Treat implementation as evidence, not unquestioned truth. Surface contradictions between the user's model, documentation, and code.
15
+
16
+ Clarify one material concept at a time. Use concrete scenarios and edge cases to test boundaries, identities, state transitions, and relationships. Prefer one canonical term per concept and distinguish concepts that only appear similar.
17
+
18
+ Keep the glossary free of implementation details. Keep specifications, task notes, and temporary decisions in their own artifacts.
19
+
20
+ ## Analyze versus write
21
+
22
+ Analyze and propose changes by default. Edit `CONTEXT.md`, a repository-equivalent glossary, or an ADR only when the user asks to record, update, or apply the decisions. Follow the repository's existing location and format; create a new convention only with user authorization.
23
+
24
+ Offer an ADR only when the decision is all three:
25
+
26
+ - costly to reverse;
27
+ - surprising without its rationale;
28
+ - the result of a real trade-off between alternatives.
29
+
30
+ Do not create an ADR for routine, temporary, or self-evident choices.
31
+
32
+ ## Completion
33
+
34
+ Report:
35
+
36
+ - terms added, changed, rejected, or still ambiguous;
37
+ - scenarios used to test the model;
38
+ - code or document mismatches found;
39
+ - files changed, if writing was authorized;
40
+ - ADR candidates and unresolved decisions that materially block the model.
@@ -0,0 +1,7 @@
1
+ interface:
2
+ display_name: "JHSTE Domain Modeling"
3
+ short_description: "Clarify domain terms, boundaries, and decisions"
4
+ default_prompt: "Use $jhste-domain-modeling to clarify the domain language and surface any conflicting concepts."
5
+
6
+ policy:
7
+ allow_implicit_invocation: true
@@ -0,0 +1,32 @@
1
+ ---
2
+ name: jhste-grill
3
+ description: Interview the user one decision at a time to sharpen or stress-test a plan, product behavior, or design. Use when the user asks to be interviewed, grilled, questioned, or guided through unresolved decisions. Do not invoke merely because an ordinary request has a small ambiguity.
4
+ ---
5
+
6
+ # JHSTE Grill
7
+
8
+ ## Goal
9
+
10
+ Reach enough shared understanding for the user to make or delegate the next layer of work confidently.
11
+
12
+ ## Interview
13
+
14
+ Inspect available code, documents, and prior decisions instead of asking the user for discoverable facts. Ask about choices that belong to the user: desired behavior, scope, priorities, compatibility, failure behavior, and consequential trade-offs.
15
+
16
+ Ask one decision question at a time. For each question, provide a recommended answer with its main reason and meaningful trade-off. Follow dependencies between decisions; do not explore branches that cannot affect the outcome.
17
+
18
+ Challenge contradictions and unsupported assumptions directly. Preserve explicit user choices. Do not implement code, publish issues, or edit domain documents as part of this skill alone.
19
+
20
+ ## Stop condition
21
+
22
+ Stop when the goal, success criteria, scope, important behavior, and material failure cases are clear enough for the intended next step. Do not continue into reversible preferences or implementation details that the next worker can decide safely.
23
+
24
+ ## Outcome
25
+
26
+ Summarize only what the session established:
27
+
28
+ - goal and success criteria;
29
+ - decisions and their reasons;
30
+ - constraints and out-of-scope items;
31
+ - unresolved questions that still block progress;
32
+ - domain terms affected and ADR candidates, when material.
@@ -0,0 +1,7 @@
1
+ interface:
2
+ display_name: "JHSTE Grill"
3
+ short_description: "Sharpen plans through focused decision interviews"
4
+ default_prompt: "Use $jhste-grill to interview me one decision at a time and summarize what we decide."
5
+
6
+ policy:
7
+ allow_implicit_invocation: true
@@ -0,0 +1,64 @@
1
+ ---
2
+ name: jhste-to-tickets
3
+ description: Turn a defined plan, specification, or conversation into GitHub parent and sub-issues with acceptance criteria and native dependency relationships. Use when the user asks to draft, split, organize, or publish work as GitHub issues or tickets. Do not use for ordinary planning or work whose execution path still requires major investigation.
4
+ ---
5
+
6
+ # JHSTE To Tickets
7
+
8
+ ## Goal
9
+
10
+ Create a GitHub-native work graph whose ready issues can be claimed and completed independently by fresh workers.
11
+
12
+ ## Resolve context
13
+
14
+ Identify the GitHub repository from the request or current remote. Read any referenced issue, specification, conversation context, repository guidance, and relevant code. Ask only for a missing decision that would materially change scope, issue boundaries, or dependencies.
15
+
16
+ ## Draft the work graph
17
+
18
+ Use a parent issue to hold the shared goal, success criteria, decisions, constraints, open questions, and out-of-scope items. Reuse an existing parent when supplied. Otherwise draft one.
19
+
20
+ Split implementation into tracer-bullet issues. Each issue must:
21
+
22
+ - deliver a narrow but complete behavior across the layers it needs;
23
+ - be independently demonstrable or verifiable;
24
+ - fit one fresh worker context;
25
+ - state observable acceptance criteria and relevant validation;
26
+ - preserve only the shared context needed to execute it.
27
+
28
+ Do not create separate database, API, UI, and test issues when none delivers behavior alone. Do not split work that is already safe and reviewable as one issue.
29
+
30
+ For a wide mechanical change that cannot land green as vertical slices, use expand-migrate-contract: introduce the compatible form, migrate bounded batches, then remove the old form.
31
+
32
+ Add a dependency only when the blocked issue cannot start until the blocker completes. Convenience or preferred order is not a dependency. The open, unblocked issues form the execution frontier.
33
+
34
+ ## Draft versus publish
35
+
36
+ Draft by default. Present the parent, sub-issues, and dependency edges without writing to GitHub.
37
+
38
+ Publish when the user explicitly asks to create, post, or publish the issues. That request authorizes these GitHub writes; it does not authorize unrelated repository changes. Create the parent and sub-issues, use GitHub's native parent and blocked-by relationships, then return their links and the initial frontier.
39
+
40
+ When native relationships are unavailable, report the limitation before falling back to references in issue bodies.
41
+
42
+ ## Issue shape
43
+
44
+ Each sub-issue should contain:
45
+
46
+ ```markdown
47
+ ## Outcome
48
+
49
+ ## Acceptance criteria
50
+ - [ ] Observable result
51
+ - [ ] Relevant validation
52
+
53
+ ## Context
54
+
55
+ ## Coordination
56
+ - Blocked by: native GitHub relationship, or None
57
+ - Integration point: branch, contract, or artifact when known
58
+ ```
59
+
60
+ Avoid speculative file paths, implementation recipes, and code snippets that will go stale. Include a prototype-derived shape only when it records a decision more precisely than prose.
61
+
62
+ ## Completion
63
+
64
+ Before finishing, verify that every issue has a clear outcome, every dependency is necessary, and at least one frontier issue exists unless an explicit external blocker prevents all work.
@@ -0,0 +1,7 @@
1
+ interface:
2
+ display_name: "JHSTE To Tickets"
3
+ short_description: "Turn defined work into GitHub issue slices"
4
+ default_prompt: "Use $jhste-to-tickets to draft GitHub issues for this defined body of work."
5
+
6
+ policy:
7
+ allow_implicit_invocation: true