ai-ops-cli 0.2.6 → 1.0.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.
- package/README.ko.md +195 -0
- package/README.md +126 -155
- package/data/context-layer/AGENTS.md +30 -0
- package/data/context-layer/CLAUDE.md +14 -0
- package/data/context-layer/GEMINI.md +14 -0
- package/data/context-layer/docs/agent/checks/impact-checklist.md +16 -0
- package/data/context-layer/docs/agent/checks/review-checklist.md +17 -0
- package/data/context-layer/docs/agent/maps/codebase-map.md +16 -0
- package/data/context-layer/docs/agent/rules/00-agent-baseline.md +47 -0
- package/data/context-layer/docs/agent/rules/doc-update-rules.md +22 -0
- package/data/context-layer/docs/agent/rules/routing-rules.md +22 -0
- package/data/context-layer/docs/agent/rules/stop-rules.md +20 -0
- package/data/context-layer/docs/agent/workflow.md +25 -0
- package/data/context-layer/docs/business/business-rules.md +16 -0
- package/data/context-layer/docs/docs-status.md +14 -0
- package/data/packs/pack-registry.json +8 -0
- package/data/packs/spec-lifecycle/docs/specs/README.ko.md +28 -0
- package/data/packs/spec-lifecycle/docs/specs/README.md +28 -0
- package/data/packs/spec-lifecycle/docs/specs/baseline/.gitkeep +1 -0
- package/data/packs/spec-lifecycle/docs/specs/initial-build/.gitkeep +1 -0
- package/data/skills/README.ko.md +184 -0
- package/data/skills/README.md +29 -2
- package/data/skills/skill-registry.json +64 -16
- package/data/skills/task-skills/doc-impact-reviewer/SKILL.md +101 -0
- package/data/skills/task-skills/doc-impact-reviewer/agents/openai.yaml +6 -0
- package/data/skills/task-skills/spec-baseline-sync/SKILL.md +134 -0
- package/data/skills/task-skills/spec-baseline-sync/agents/openai.yaml +6 -0
- package/data/skills/task-skills/spec-baseline-sync/references/template.md +14 -0
- package/data/skills/task-skills/spec-product-01-idea-to-brief/SKILL.md +78 -0
- package/data/skills/task-skills/spec-product-01-idea-to-brief/agents/openai.yaml +6 -0
- package/data/skills/task-skills/spec-product-01-idea-to-brief/references/template.md +36 -0
- package/data/skills/task-skills/spec-product-02-brief-to-technical-context/SKILL.md +91 -0
- package/data/skills/task-skills/spec-product-02-brief-to-technical-context/agents/openai.yaml +6 -0
- package/data/skills/task-skills/spec-product-02-brief-to-technical-context/references/template.md +58 -0
- package/data/skills/task-skills/spec-product-03-brief-to-product-spec/SKILL.md +85 -0
- package/data/skills/task-skills/spec-product-03-brief-to-product-spec/agents/openai.yaml +6 -0
- package/data/skills/task-skills/spec-product-03-brief-to-product-spec/references/template.md +41 -0
- package/data/skills/task-skills/spec-product-04-product-spec-to-ui-spec/SKILL.md +93 -0
- package/data/skills/task-skills/spec-product-04-product-spec-to-ui-spec/agents/openai.yaml +6 -0
- package/data/skills/task-skills/spec-product-04-product-spec-to-ui-spec/references/stitch-prompt-template.md +41 -0
- package/data/skills/task-skills/spec-product-04-product-spec-to-ui-spec/references/ui-spec-template.md +39 -0
- package/data/skills/task-skills/spec-product-05-spec-to-work-packets/SKILL.md +157 -0
- package/data/skills/task-skills/spec-product-05-spec-to-work-packets/agents/openai.yaml +6 -0
- package/data/skills/task-skills/spec-product-05-spec-to-work-packets/references/stitch-html-review.md +25 -0
- package/data/skills/task-skills/spec-product-05-spec-to-work-packets/references/work-packet-template.md +67 -0
- package/data/skills/task-skills/spec-shared-glossary-sync/SKILL.md +102 -0
- package/data/skills/task-skills/spec-shared-glossary-sync/agents/openai.yaml +6 -0
- package/data/skills/task-skills/spec-shared-glossary-sync/references/checklist.md +36 -0
- package/data/skills/task-skills/spec-shared-glossary-sync/references/template.md +58 -0
- package/data/subagents/README.ko.md +49 -0
- package/data/subagents/README.md +49 -0
- package/data/subagents/security-gate/PROMPT.md +18 -0
- package/data/subagents/security-gate/claude.frontmatter.yaml +8 -0
- package/data/subagents/security-gate/codex.frontmatter.toml +6 -0
- package/data/subagents/security-gate/gemini.frontmatter.yaml +6 -0
- package/data/subagents/security-reviewer/PROMPT.md +17 -0
- package/data/subagents/security-reviewer/claude.frontmatter.yaml +9 -0
- package/data/subagents/security-reviewer/codex.frontmatter.toml +6 -0
- package/data/subagents/security-reviewer/gemini.frontmatter.yaml +6 -0
- package/data/subagents/subagent-registry.json +14 -0
- package/dist/bin/index.js +2103 -1713
- package/dist/bin/index.js.map +1 -1
- package/package.json +2 -2
- package/data/presets.yaml +0 -35
- package/data/rules/code-philosophy.yaml +0 -35
- package/data/rules/communication.yaml +0 -12
- package/data/rules/naming-convention.yaml +0 -10
- package/data/rules/plan-mode.yaml +0 -32
- package/data/rules/role-persona.yaml +0 -14
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: spec-shared-glossary-sync
|
|
3
|
+
description: Create or update a Korean 01_glossary.md inside the current project's docs/specs/baseline directory by standardizing domain terms, entities, states, UI labels, and English code-facing names across baseline docs and active .codex/plans.
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# spec-shared-glossary-sync
|
|
8
|
+
|
|
9
|
+
Use this skill when the project needs a shared glossary or when existing docs/specs/plans have begun to drift in terminology.
|
|
10
|
+
|
|
11
|
+
Typical high-value run points are:
|
|
12
|
+
|
|
13
|
+
- after `brief`
|
|
14
|
+
- after `product spec`
|
|
15
|
+
- after `ui spec`
|
|
16
|
+
- during `spec-baseline-sync` if implemented terminology changed
|
|
17
|
+
- whenever naming drift is noticed
|
|
18
|
+
|
|
19
|
+
Usually skip automatic reruns after small plans unless new shared terminology was introduced.
|
|
20
|
+
|
|
21
|
+
## Output Location
|
|
22
|
+
|
|
23
|
+
- Write into the current workspace.
|
|
24
|
+
- Default output path: `./docs/specs/baseline/01_glossary.md`
|
|
25
|
+
|
|
26
|
+
## Language Rules
|
|
27
|
+
|
|
28
|
+
- Write the glossary in Korean.
|
|
29
|
+
- Keep code-facing English identifiers, API field names, library/service names, protocol names, file paths, and standard technical terms in their natural English form when clearer.
|
|
30
|
+
- Do not invent awkward Koreanized spellings for standard English technical terms.
|
|
31
|
+
- If a term needs explanation, keep the standard term and add a short Korean definition.
|
|
32
|
+
|
|
33
|
+
## Objective
|
|
34
|
+
|
|
35
|
+
Maintain one canonical vocabulary so briefs, specs, UI docs, plans, packets, and baseline sync entries use the same terms for the same concepts.
|
|
36
|
+
|
|
37
|
+
The default output style is:
|
|
38
|
+
|
|
39
|
+
- tables first for fast scanning
|
|
40
|
+
- detailed subsections only for genuinely complex concepts
|
|
41
|
+
- diagrams only when relationships or state vocabularies are hard to understand in prose
|
|
42
|
+
|
|
43
|
+
## Create Or Update Rules
|
|
44
|
+
|
|
45
|
+
- If `./docs/specs/baseline/01_glossary.md` does not exist, create it from currently approved specs and relevant active plans.
|
|
46
|
+
- If it exists, update it instead of replacing it blindly.
|
|
47
|
+
- Preserve stable canonical terms unless there is a strong reason to change them.
|
|
48
|
+
- If a newly found term conflicts with an existing definition, keep the current canonical term and record the conflict in `정의 충돌 / 검토 필요`.
|
|
49
|
+
- Normalize synonyms toward one preferred term.
|
|
50
|
+
- Prefer Korean for user-facing/domain wording, but keep standard English when clearer, more stable, or already established in the project.
|
|
51
|
+
|
|
52
|
+
## Recommended Inputs
|
|
53
|
+
|
|
54
|
+
Read relevant files that exist:
|
|
55
|
+
|
|
56
|
+
- `./docs/specs/baseline/00_brief.md`
|
|
57
|
+
- `./docs/specs/baseline/05_technical-context.md`
|
|
58
|
+
- `./docs/specs/baseline/10_product-spec.md`
|
|
59
|
+
- `./docs/specs/baseline/20_ui-spec.md`
|
|
60
|
+
- active `./.codex/plans/*.md` when terminology from a current change needs to become canonical
|
|
61
|
+
- `./docs/specs/initial-build/<topic>/30_work-packets/*.md` when reviewing initial build terminology
|
|
62
|
+
- existing `./docs/specs/baseline/01_glossary.md`
|
|
63
|
+
|
|
64
|
+
Use only files that are present and relevant.
|
|
65
|
+
|
|
66
|
+
## Workflow
|
|
67
|
+
|
|
68
|
+
1. Identify repeated nouns, states, and labels across available docs.
|
|
69
|
+
2. Separate true domain concepts from incidental wording.
|
|
70
|
+
3. Choose one canonical project term per concept.
|
|
71
|
+
4. Attach English code-facing counterpart when needed.
|
|
72
|
+
5. Capture harmless synonyms only when useful.
|
|
73
|
+
6. List discouraged or banned wording when ambiguity is likely.
|
|
74
|
+
7. Write most glossary content as tables.
|
|
75
|
+
8. Move only hard cases into detailed sections.
|
|
76
|
+
9. Update the glossary without deleting still-valid prior decisions.
|
|
77
|
+
|
|
78
|
+
Use these references while drafting:
|
|
79
|
+
|
|
80
|
+
- [references/template.md](references/template.md)
|
|
81
|
+
- [references/checklist.md](references/checklist.md)
|
|
82
|
+
|
|
83
|
+
## Required Sections
|
|
84
|
+
|
|
85
|
+
- `핵심 용어`
|
|
86
|
+
- `엔티티 용어`
|
|
87
|
+
- `상태 용어`
|
|
88
|
+
- `UI 용어`
|
|
89
|
+
- `금지하거나 피할 표현`
|
|
90
|
+
- `복잡한 개념 상세 설명`
|
|
91
|
+
- `정의 충돌 / 검토 필요`
|
|
92
|
+
|
|
93
|
+
## Quality Bar
|
|
94
|
+
|
|
95
|
+
The glossary is not ready if:
|
|
96
|
+
|
|
97
|
+
- simple vocabulary that should be in tables is expanded into unnecessary prose
|
|
98
|
+
- the same concept still appears under multiple primary names
|
|
99
|
+
- terms are listed without definitions
|
|
100
|
+
- code-facing English names and canonical project terms conflict without explanation
|
|
101
|
+
- banned or confusing wording is omitted despite clear ambiguity
|
|
102
|
+
- existing approved terminology is overwritten without explanation
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
interface:
|
|
2
|
+
display_name: "spec-shared-glossary-sync"
|
|
3
|
+
short_description: "Standardize Korean spec terms into a shared baseline glossary."
|
|
4
|
+
default_prompt: "Use $spec-shared-glossary-sync to create or update a Korean 01_glossary.md that standardizes terms across baseline docs and active .codex/plans."
|
|
5
|
+
policy:
|
|
6
|
+
allow_implicit_invocation: false
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Glossary Sync Checklist
|
|
2
|
+
|
|
3
|
+
Use this checklist before finalizing `01_glossary.md`.
|
|
4
|
+
|
|
5
|
+
## Look For
|
|
6
|
+
|
|
7
|
+
- one concept described with multiple Korean names
|
|
8
|
+
- one Korean term mapped to multiple English code names
|
|
9
|
+
- UI copy that conflicts with domain terms
|
|
10
|
+
- product docs and change docs using different names for the same thing
|
|
11
|
+
- states that appear in packets but were never defined centrally
|
|
12
|
+
|
|
13
|
+
## Prefer
|
|
14
|
+
|
|
15
|
+
- a table-first structure for most vocabulary
|
|
16
|
+
- one canonical project term per concept
|
|
17
|
+
- prefer Korean for user-facing/domain nouns, but keep standard English when that is clearer or already the stable norm
|
|
18
|
+
- one code-facing English name per canonical concept when possible
|
|
19
|
+
- short definitions that explain scope, not implementation
|
|
20
|
+
- explicit “do not use” wording for risky ambiguities
|
|
21
|
+
- detailed prose only for genuinely complex concepts
|
|
22
|
+
|
|
23
|
+
## 대표 예시
|
|
24
|
+
|
|
25
|
+
- 플랜 / 루틴 / 프로그램
|
|
26
|
+
- 운동 세션 / 운동 기록 / workout
|
|
27
|
+
- 세트 템플릿 / 세트 기록
|
|
28
|
+
- 저장 / 완료 / 확정
|
|
29
|
+
- 초안 / 진행 중 / 임시 저장
|
|
30
|
+
|
|
31
|
+
## Update Rule
|
|
32
|
+
|
|
33
|
+
- merge new terms into the existing glossary
|
|
34
|
+
- do not delete stable terms unless they are clearly wrong
|
|
35
|
+
- when uncertain, add the conflict to `정의 충돌 / 검토 필요`
|
|
36
|
+
- keep simple terms in tables; avoid turning the whole glossary into long prose
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# 01_glossary.md Template
|
|
2
|
+
|
|
3
|
+
```md
|
|
4
|
+
# 01 Glossary
|
|
5
|
+
|
|
6
|
+
용어 표기 원칙:
|
|
7
|
+
|
|
8
|
+
- `용어` 칼럼은 한국어 우선이지만, 업계 표준 영어가 더 명확하면 영어 원형을 그대로 쓴다.
|
|
9
|
+
- `소스 오브 트루스` 같은 어색한 음역 대신 `source of truth` 또는 한국어 설명형 표현을 사용한다.
|
|
10
|
+
|
|
11
|
+
## 핵심 용어
|
|
12
|
+
|
|
13
|
+
| 용어 | 영문 / 코드명 | 정의 | 사용 범위 | 허용 별칭 | 금지 표현 | 관련 문서 |
|
|
14
|
+
|---|---|---|---|---|---|---|
|
|
15
|
+
| 용어 1 | `termName` | 짧은 정의 | brief / spec / ui | 별칭 1 | 금지 표현 1 | `10_product-spec.md` |
|
|
16
|
+
|
|
17
|
+
## 엔티티 용어
|
|
18
|
+
|
|
19
|
+
| 용어 | 영문 / 코드명 | 정의 | 사용 범위 | 허용 별칭 | 금지 표현 | 관련 문서 |
|
|
20
|
+
|---|---|---|---|---|---|---|
|
|
21
|
+
| 엔티티 1 | `entityName` | 짧은 정의 | spec / packet | 별칭 1 | 금지 표현 1 | `10_product-spec.md` |
|
|
22
|
+
|
|
23
|
+
## 상태 용어
|
|
24
|
+
|
|
25
|
+
| 용어 | 영문 / 코드명 | 정의 | 사용 범위 | 허용 별칭 | 금지 표현 | 관련 문서 |
|
|
26
|
+
|---|---|---|---|---|---|---|
|
|
27
|
+
| 상태 1 | `draft` | 짧은 정의 | spec / ui / packet | 별칭 1 | 금지 표현 1 | `10_product-spec.md` |
|
|
28
|
+
|
|
29
|
+
## UI 용어
|
|
30
|
+
|
|
31
|
+
| 용어 | 영문 / 코드명 | 정의 | 사용 범위 | 허용 별칭 | 금지 표현 | 관련 문서 |
|
|
32
|
+
|---|---|---|---|---|---|---|
|
|
33
|
+
| UI 용어 1 | `labelName` | 짧은 정의 | ui / packet | 별칭 1 | 금지 표현 1 | `20_ui-spec.md` |
|
|
34
|
+
|
|
35
|
+
## 금지하거나 피할 표현
|
|
36
|
+
|
|
37
|
+
| 표현 | 이유 | 대신 사용할 표현 |
|
|
38
|
+
|---|---|---|
|
|
39
|
+
| 표현 1 | 왜 피해야 하는지 | 표준 표현 |
|
|
40
|
+
|
|
41
|
+
## 복잡한 개념 상세 설명
|
|
42
|
+
|
|
43
|
+
### 개념 1
|
|
44
|
+
|
|
45
|
+
- 왜 이 개념이 표만으로는 충분하지 않은지 설명
|
|
46
|
+
- 어떤 문맥에서 다른 표현과 충돌하는지 설명
|
|
47
|
+
|
|
48
|
+
```mermaid
|
|
49
|
+
flowchart TD
|
|
50
|
+
A["개념 A"] --> B["개념 B"]
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## 정의 충돌 / 검토 필요
|
|
54
|
+
|
|
55
|
+
| 항목 | 현재 표준 | 충돌 표현 | 판단 메모 |
|
|
56
|
+
|---|---|---|---|
|
|
57
|
+
| 충돌 항목 | 현재 표준 표현 | 새로 발견된 표현 | 판단 메모 |
|
|
58
|
+
```
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Subagent 작성 가이드
|
|
2
|
+
|
|
3
|
+
[English](./README.md)
|
|
4
|
+
|
|
5
|
+
이 디렉터리는 global agent subagent의 source of truth입니다.
|
|
6
|
+
|
|
7
|
+
## 디렉터리 구조
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
apps/cli/data/subagents/
|
|
11
|
+
README.md
|
|
12
|
+
README.ko.md
|
|
13
|
+
subagent-registry.json
|
|
14
|
+
<subagent-id>/
|
|
15
|
+
PROMPT.md
|
|
16
|
+
claude.frontmatter.yaml
|
|
17
|
+
codex.frontmatter.toml
|
|
18
|
+
gemini.frontmatter.yaml
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## 작성 규칙
|
|
22
|
+
|
|
23
|
+
1. `subagent-registry.json`만 catalog 노출 여부를 결정합니다.
|
|
24
|
+
2. `id`와 세 frontmatter의 `name`은 모두 같은 kebab-case 값이어야 합니다.
|
|
25
|
+
3. `supported_tools`는 `claude-code`, `codex`, `gemini` 중 하나 이상이어야 합니다.
|
|
26
|
+
4. `PROMPT.md`는 도구 공통 developer instruction 본문입니다.
|
|
27
|
+
5. Claude/Gemini는 YAML frontmatter와 `PROMPT.md`를 합친 Markdown 파일로 렌더링됩니다.
|
|
28
|
+
6. Codex는 TOML metadata, `developer_instructions`, `[[skills.config]]`로 렌더링됩니다.
|
|
29
|
+
7. Codex `skill_names`는 최종 파일에 그대로 남기지 않고 `AI_OPS_HOME/.agents/skills/<skill>/SKILL.md` 절대 경로로 변환합니다.
|
|
30
|
+
8. 필요한 skill이 없어도 설치는 실패하지 않습니다. CLI는 경고만 출력합니다.
|
|
31
|
+
9. subagent는 항상 global tool home에만 설치합니다. project repo에는 `.codex/agents`, `.claude/agents`, `.gemini/agents`, `.ai-ops/subagents-manifest.json`을 만들지 않습니다.
|
|
32
|
+
|
|
33
|
+
## Registry 필드
|
|
34
|
+
|
|
35
|
+
| 필드 | 필수 | 예시 | 의미 |
|
|
36
|
+
| --- | --- | --- | --- |
|
|
37
|
+
| `id` | 예 | `security-gate` | canonical subagent id |
|
|
38
|
+
| `supported_tools` | 예 | `["claude-code", "codex", "gemini"]` | 설치 가능한 도구 목록 |
|
|
39
|
+
| `source_path` | 예 | `security-gate` | 상대 source 디렉터리 |
|
|
40
|
+
|
|
41
|
+
## 출력 경로
|
|
42
|
+
|
|
43
|
+
| 도구 | 출력 경로 |
|
|
44
|
+
| --- | --- |
|
|
45
|
+
| Codex | `.codex/agents/<id>.toml` |
|
|
46
|
+
| Claude Code | `.claude/agents/<id>.md` |
|
|
47
|
+
| Gemini CLI | `.gemini/agents/<id>.md` |
|
|
48
|
+
|
|
49
|
+
상태 파일은 `.ai-ops/subagents-manifest.json`입니다. Skill 상태 파일인 `.ai-ops/skills-manifest.json`과 서로 읽거나 쓰지 않습니다.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Subagent Authoring Guide
|
|
2
|
+
|
|
3
|
+
[Korean](./README.ko.md)
|
|
4
|
+
|
|
5
|
+
This directory is the source of truth for global agent subagents.
|
|
6
|
+
|
|
7
|
+
## Directory Shape
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
apps/cli/data/subagents/
|
|
11
|
+
README.md
|
|
12
|
+
README.ko.md
|
|
13
|
+
subagent-registry.json
|
|
14
|
+
<subagent-id>/
|
|
15
|
+
PROMPT.md
|
|
16
|
+
claude.frontmatter.yaml
|
|
17
|
+
codex.frontmatter.toml
|
|
18
|
+
gemini.frontmatter.yaml
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Authoring Rules
|
|
22
|
+
|
|
23
|
+
1. Only `subagent-registry.json` decides whether a subagent is exposed in the catalog.
|
|
24
|
+
2. `id` and the `name` in all three frontmatter files must be the same kebab-case value.
|
|
25
|
+
3. `supported_tools` must contain at least one of `claude-code`, `codex`, or `gemini`.
|
|
26
|
+
4. `PROMPT.md` is the shared developer instruction body for all tools.
|
|
27
|
+
5. Claude/Gemini render as Markdown files that combine YAML frontmatter with `PROMPT.md`.
|
|
28
|
+
6. Codex renders as TOML metadata, `developer_instructions`, and `[[skills.config]]`.
|
|
29
|
+
7. Codex `skill_names` are not kept verbatim in the final file; they are converted to absolute `AI_OPS_HOME/.agents/skills/<skill>/SKILL.md` paths.
|
|
30
|
+
8. Installation does not fail when required skills are missing. The CLI only prints a warning.
|
|
31
|
+
9. Subagents are always installed only in the global tool home. The project repo must not receive `.codex/agents`, `.claude/agents`, `.gemini/agents`, or `.ai-ops/subagents-manifest.json`.
|
|
32
|
+
|
|
33
|
+
## Registry Fields
|
|
34
|
+
|
|
35
|
+
| Field | Required | Example | Meaning |
|
|
36
|
+
| ----------------- | -------- | ------------------------------------ | ------------------------- |
|
|
37
|
+
| `id` | Yes | `security-gate` | Canonical subagent id |
|
|
38
|
+
| `supported_tools` | Yes | `["claude-code", "codex", "gemini"]` | Tools that can install it |
|
|
39
|
+
| `source_path` | Yes | `security-gate` | Relative source directory |
|
|
40
|
+
|
|
41
|
+
## Output Paths
|
|
42
|
+
|
|
43
|
+
| Tool | Output path |
|
|
44
|
+
| ----------- | ------------------------- |
|
|
45
|
+
| Codex | `.codex/agents/<id>.toml` |
|
|
46
|
+
| Claude Code | `.claude/agents/<id>.md` |
|
|
47
|
+
| Gemini CLI | `.gemini/agents/<id>.md` |
|
|
48
|
+
|
|
49
|
+
The state file is `.ai-ops/subagents-manifest.json`. It is separate from the skill state file, `.ai-ops/skills-manifest.json`; neither lifecycle reads or writes the other.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
You are `security-gate`, a lightweight security triage subagent.
|
|
2
|
+
|
|
3
|
+
Your job is to decide whether the provided spec artifact or code change needs deeper security review.
|
|
4
|
+
|
|
5
|
+
Use the loaded `spec-security-01-triage` skill as the source of truth. Prefer compact Korean output and fail closed:
|
|
6
|
+
|
|
7
|
+
- if a clear high-risk trigger exists, require review
|
|
8
|
+
- if the change is obviously low-risk, allow no-review
|
|
9
|
+
- if anything is ambiguous, return `UNSURE` and treat it as review-required
|
|
10
|
+
|
|
11
|
+
Do not perform a full security review unless the parent explicitly asks for one. Focus on triage only:
|
|
12
|
+
|
|
13
|
+
- decide `mode=spec` or `mode=code` from the parent request
|
|
14
|
+
- identify the concrete triggers
|
|
15
|
+
- list required controls briefly
|
|
16
|
+
- say whether follow-up review is required
|
|
17
|
+
|
|
18
|
+
Output should stay short and structured around the triage contract.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
You are `security-reviewer`, a focused security review subagent.
|
|
2
|
+
|
|
3
|
+
Use the loaded security skills as the source of truth. Start by checking whether the change is truly review-worthy. If the request is explicitly for security review, or if triage is `REVIEW_REQUIRED` or `UNSURE`, perform the full review.
|
|
4
|
+
|
|
5
|
+
Your review must stay findings-first, severity-first, and in Korean.
|
|
6
|
+
|
|
7
|
+
Focus on material security risks such as:
|
|
8
|
+
|
|
9
|
+
- authentication and authorization gaps
|
|
10
|
+
- sensitive data exposure
|
|
11
|
+
- unsafe input handling, injection, or template/rendering issues
|
|
12
|
+
- SSRF or unsafe external fetch behavior
|
|
13
|
+
- file upload/download risks
|
|
14
|
+
- tenant isolation and destructive action safety
|
|
15
|
+
- missing security-relevant validation, auditability, or regression coverage
|
|
16
|
+
|
|
17
|
+
Do not spend time on style or general cleanup unless no material issue exists. If no deep review is needed, say that briefly and explain why.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
name: security-reviewer
|
|
2
|
+
description: Review a code or contract change for material security risks and missing controls.
|
|
3
|
+
tools: Read, Glob, Grep
|
|
4
|
+
model: sonnet
|
|
5
|
+
permissionMode: plan
|
|
6
|
+
maxTurns: 10
|
|
7
|
+
skills:
|
|
8
|
+
- spec-security-01-triage
|
|
9
|
+
- spec-security-02-review
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
name = "security-reviewer"
|
|
2
|
+
description = "Review a code or contract change for material security risks and missing controls."
|
|
3
|
+
model = "gpt-5.4"
|
|
4
|
+
model_reasoning_effort = "high"
|
|
5
|
+
sandbox_mode = "read-only"
|
|
6
|
+
skill_names = ["spec-security-01-triage", "spec-security-02-review"]
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"subagents": [
|
|
3
|
+
{
|
|
4
|
+
"id": "security-gate",
|
|
5
|
+
"supported_tools": ["claude-code", "codex", "gemini"],
|
|
6
|
+
"source_path": "security-gate"
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"id": "security-reviewer",
|
|
10
|
+
"supported_tools": ["claude-code", "codex", "gemini"],
|
|
11
|
+
"source_path": "security-reviewer"
|
|
12
|
+
}
|
|
13
|
+
]
|
|
14
|
+
}
|