ai-ops-cli 0.2.6 → 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.
Files changed (62) hide show
  1. package/README.ko.md +170 -0
  2. package/README.md +109 -163
  3. package/data/context-layer/AGENTS.md +29 -0
  4. package/data/context-layer/CLAUDE.md +14 -0
  5. package/data/context-layer/GEMINI.md +14 -0
  6. package/data/context-layer/docs/agent/checks/impact-checklist.md +16 -0
  7. package/data/context-layer/docs/agent/checks/review-checklist.md +17 -0
  8. package/data/context-layer/docs/agent/maps/codebase-map.md +16 -0
  9. package/data/context-layer/docs/agent/rules/doc-update-rules.md +22 -0
  10. package/data/context-layer/docs/agent/rules/routing-rules.md +22 -0
  11. package/data/context-layer/docs/agent/rules/stop-rules.md +20 -0
  12. package/data/context-layer/docs/agent/workflow.md +25 -0
  13. package/data/context-layer/docs/business/business-rules.md +16 -0
  14. package/data/context-layer/docs/docs-status.md +14 -0
  15. package/data/packs/pack-registry.json +8 -0
  16. package/data/packs/spec-lifecycle/docs/specs/README.ko.md +26 -0
  17. package/data/packs/spec-lifecycle/docs/specs/README.md +26 -0
  18. package/data/packs/spec-lifecycle/docs/specs/baseline/.gitkeep +1 -0
  19. package/data/packs/spec-lifecycle/docs/specs/initial-build/.gitkeep +1 -0
  20. package/data/skills/README.ko.md +182 -0
  21. package/data/skills/README.md +27 -2
  22. package/data/skills/skill-registry.json +64 -16
  23. package/data/skills/task-skills/doc-impact-reviewer/SKILL.md +101 -0
  24. package/data/skills/task-skills/doc-impact-reviewer/agents/openai.yaml +6 -0
  25. package/data/skills/task-skills/spec-baseline-sync/SKILL.md +134 -0
  26. package/data/skills/task-skills/spec-baseline-sync/agents/openai.yaml +6 -0
  27. package/data/skills/task-skills/spec-baseline-sync/references/template.md +14 -0
  28. package/data/skills/task-skills/spec-product-01-idea-to-brief/SKILL.md +78 -0
  29. package/data/skills/task-skills/spec-product-01-idea-to-brief/agents/openai.yaml +6 -0
  30. package/data/skills/task-skills/spec-product-01-idea-to-brief/references/template.md +36 -0
  31. package/data/skills/task-skills/spec-product-02-brief-to-technical-context/SKILL.md +91 -0
  32. package/data/skills/task-skills/spec-product-02-brief-to-technical-context/agents/openai.yaml +6 -0
  33. package/data/skills/task-skills/spec-product-02-brief-to-technical-context/references/template.md +58 -0
  34. package/data/skills/task-skills/spec-product-03-brief-to-product-spec/SKILL.md +85 -0
  35. package/data/skills/task-skills/spec-product-03-brief-to-product-spec/agents/openai.yaml +6 -0
  36. package/data/skills/task-skills/spec-product-03-brief-to-product-spec/references/template.md +41 -0
  37. package/data/skills/task-skills/spec-product-04-product-spec-to-ui-spec/SKILL.md +93 -0
  38. package/data/skills/task-skills/spec-product-04-product-spec-to-ui-spec/agents/openai.yaml +6 -0
  39. package/data/skills/task-skills/spec-product-04-product-spec-to-ui-spec/references/stitch-prompt-template.md +41 -0
  40. package/data/skills/task-skills/spec-product-04-product-spec-to-ui-spec/references/ui-spec-template.md +39 -0
  41. package/data/skills/task-skills/spec-product-05-spec-to-work-packets/SKILL.md +157 -0
  42. package/data/skills/task-skills/spec-product-05-spec-to-work-packets/agents/openai.yaml +6 -0
  43. package/data/skills/task-skills/spec-product-05-spec-to-work-packets/references/stitch-html-review.md +25 -0
  44. package/data/skills/task-skills/spec-product-05-spec-to-work-packets/references/work-packet-template.md +67 -0
  45. package/data/skills/task-skills/spec-shared-glossary-sync/SKILL.md +102 -0
  46. package/data/skills/task-skills/spec-shared-glossary-sync/agents/openai.yaml +6 -0
  47. package/data/skills/task-skills/spec-shared-glossary-sync/references/checklist.md +36 -0
  48. package/data/skills/task-skills/spec-shared-glossary-sync/references/template.md +58 -0
  49. package/data/subagents/README.ko.md +47 -0
  50. package/data/subagents/README.md +47 -0
  51. package/data/subagents/security-gate/PROMPT.md +18 -0
  52. package/data/subagents/security-gate/claude.frontmatter.yaml +8 -0
  53. package/data/subagents/security-gate/codex.frontmatter.toml +6 -0
  54. package/data/subagents/security-gate/gemini.frontmatter.yaml +6 -0
  55. package/data/subagents/security-reviewer/PROMPT.md +17 -0
  56. package/data/subagents/security-reviewer/claude.frontmatter.yaml +9 -0
  57. package/data/subagents/security-reviewer/codex.frontmatter.toml +6 -0
  58. package/data/subagents/security-reviewer/gemini.frontmatter.yaml +6 -0
  59. package/data/subagents/subagent-registry.json +14 -0
  60. package/dist/bin/index.js +2101 -1712
  61. package/dist/bin/index.js.map +1 -1
  62. package/package.json +2 -2
@@ -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,47 @@
1
+ # Subagent 작성 가이드
2
+
3
+ 이 디렉터리는 global agent subagent의 source of truth입니다.
4
+
5
+ ## 디렉터리 구조
6
+
7
+ ```text
8
+ apps/cli/data/subagents/
9
+ README.md
10
+ README.ko.md
11
+ subagent-registry.json
12
+ <subagent-id>/
13
+ PROMPT.md
14
+ claude.frontmatter.yaml
15
+ codex.frontmatter.toml
16
+ gemini.frontmatter.yaml
17
+ ```
18
+
19
+ ## 작성 규칙
20
+
21
+ 1. `subagent-registry.json`만 catalog 노출 여부를 결정합니다.
22
+ 2. `id`와 세 frontmatter의 `name`은 모두 같은 kebab-case 값이어야 합니다.
23
+ 3. `supported_tools`는 `claude-code`, `codex`, `gemini` 중 하나 이상이어야 합니다.
24
+ 4. `PROMPT.md`는 도구 공통 developer instruction 본문입니다.
25
+ 5. Claude/Gemini는 YAML frontmatter와 `PROMPT.md`를 합친 Markdown 파일로 렌더링됩니다.
26
+ 6. Codex는 TOML metadata, `developer_instructions`, `[[skills.config]]`로 렌더링됩니다.
27
+ 7. Codex `skill_names`는 최종 파일에 그대로 남기지 않고 `AI_OPS_HOME/.agents/skills/<skill>/SKILL.md` 절대 경로로 변환합니다.
28
+ 8. 필요한 skill이 없어도 설치는 실패하지 않습니다. CLI는 경고만 출력합니다.
29
+ 9. subagent는 항상 global tool home에만 설치합니다. project repo에는 `.codex/agents`, `.claude/agents`, `.gemini/agents`, `.ai-ops/subagents-manifest.json`을 만들지 않습니다.
30
+
31
+ ## Registry 필드
32
+
33
+ | 필드 | 필수 | 예시 | 의미 |
34
+ | --- | --- | --- | --- |
35
+ | `id` | 예 | `security-gate` | canonical subagent id |
36
+ | `supported_tools` | 예 | `["claude-code", "codex", "gemini"]` | 설치 가능한 도구 목록 |
37
+ | `source_path` | 예 | `security-gate` | 상대 source 디렉터리 |
38
+
39
+ ## 출력 경로
40
+
41
+ | 도구 | 출력 경로 |
42
+ | --- | --- |
43
+ | Codex | `.codex/agents/<id>.toml` |
44
+ | Claude Code | `.claude/agents/<id>.md` |
45
+ | Gemini CLI | `.gemini/agents/<id>.md` |
46
+
47
+ 상태 파일은 `.ai-ops/subagents-manifest.json`입니다. Skill 상태 파일인 `.ai-ops/skills-manifest.json`과 서로 읽거나 쓰지 않습니다.
@@ -0,0 +1,47 @@
1
+ # Subagent Authoring Guide
2
+
3
+ This directory is the source of truth for global agent subagents.
4
+
5
+ ## Directory Shape
6
+
7
+ ```text
8
+ apps/cli/data/subagents/
9
+ README.md
10
+ README.ko.md
11
+ subagent-registry.json
12
+ <subagent-id>/
13
+ PROMPT.md
14
+ claude.frontmatter.yaml
15
+ codex.frontmatter.toml
16
+ gemini.frontmatter.yaml
17
+ ```
18
+
19
+ ## Authoring Rules
20
+
21
+ 1. Only `subagent-registry.json` decides whether a subagent is exposed in the catalog.
22
+ 2. `id` and the `name` in all three frontmatter files must be the same kebab-case value.
23
+ 3. `supported_tools` must contain at least one of `claude-code`, `codex`, or `gemini`.
24
+ 4. `PROMPT.md` is the shared developer instruction body for all tools.
25
+ 5. Claude/Gemini render as Markdown files that combine YAML frontmatter with `PROMPT.md`.
26
+ 6. Codex renders as TOML metadata, `developer_instructions`, and `[[skills.config]]`.
27
+ 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.
28
+ 8. Installation does not fail when required skills are missing. The CLI only prints a warning.
29
+ 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`.
30
+
31
+ ## Registry Fields
32
+
33
+ | Field | Required | Example | Meaning |
34
+ | ----------------- | -------- | ------------------------------------ | ------------------------- |
35
+ | `id` | Yes | `security-gate` | Canonical subagent id |
36
+ | `supported_tools` | Yes | `["claude-code", "codex", "gemini"]` | Tools that can install it |
37
+ | `source_path` | Yes | `security-gate` | Relative source directory |
38
+
39
+ ## Output Paths
40
+
41
+ | Tool | Output path |
42
+ | ----------- | ------------------------- |
43
+ | Codex | `.codex/agents/<id>.toml` |
44
+ | Claude Code | `.claude/agents/<id>.md` |
45
+ | Gemini CLI | `.gemini/agents/<id>.md` |
46
+
47
+ 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,8 @@
1
+ name: security-gate
2
+ description: Decide whether a spec artifact or code change needs deeper security review.
3
+ tools: Read, Glob, Grep
4
+ model: haiku
5
+ permissionMode: plan
6
+ maxTurns: 6
7
+ skills:
8
+ - spec-security-01-triage
@@ -0,0 +1,6 @@
1
+ name = "security-gate"
2
+ description = "Decide whether a spec artifact or code change needs deeper security review."
3
+ model = "gpt-5.4-mini"
4
+ model_reasoning_effort = "low"
5
+ sandbox_mode = "read-only"
6
+ skill_names = ["spec-security-01-triage"]
@@ -0,0 +1,6 @@
1
+ name: security-gate
2
+ description: Decide whether a spec artifact or code change needs deeper security review.
3
+ kind: local
4
+ model: gemini-3-flash-preview
5
+ temperature: 0
6
+ max_turns: 6
@@ -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,6 @@
1
+ name: security-reviewer
2
+ description: Review a code or contract change for material security risks and missing controls.
3
+ kind: local
4
+ model: gemini-3-pro-preview
5
+ temperature: 0
6
+ max_turns: 10
@@ -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
+ }