Imported from revfactory/harness-for-agy (
skills/harness/SKILL.md). Install upstream withnpx skills add revfactory/harness-for-agy --skill harness. Copyright stays with the author.
Project Harness Scaffolder (/harness)
μ΄ μ€ν¬μ μ¬μ©μκ° κ΅¬μΆνκ³ μ νλ μ΄λ ν νλ‘μ νΈ ννλ λΉμ μ λ§μΆ°, νΉνλ **μμ΄μ νΈ νλ₯΄μλ(Personas)**νκ³Ό κ·Έλ€μ΄ μ¬μ©ν 곡μ κ·κ²© 컀μ€ν μ€ν¬(Skills) ꡬ쑰λ₯Ό μΌκ΄ μ€κ³νκ³ νλ‘μ νΈ ν΄λ νμμ μ€μΊν΄λ©(μλ λΌλ μμ±)νκ±°λ, μ΄λ―Έ ꡬμΆλ μμ΄μ νΈ λ° μ€ν¬ μ 체 ꡬμ±μ λΆμνμ¬ νμ μ μμ΄μ νΈλ₯Ό μΆκ° ꡬμ±νκ³ κΈ°μ‘΄ ꡬμ±μ μλ²½ν 보μν©λλ€.
When to use this skill
- μλ‘μ΄ νλ‘μ νΈλ₯Ό μμν λ, κ·Έμ νΉνλ λ€μ€ μμ΄μ νΈ νμ νμ ꡬμΆνκ³ μ ν λ.
- μ¬μ©μκ° "React ν μ€νΈ μλν νμ ꡬμ±ν΄μ€" νΉμ "λ°μ΄ν° λΆμ νμ΄νλΌμΈ μ μ© μμ΄μ νΈμ μ€ν¬λ€μ λΉλν΄μ€"λΌκ³ λλ©μΈλ³ μμ²μ ν λ.
- κΈ°μ‘΄μ ꡬμ±λ μμ΄μ νΈ λ° μ€ν¬ λͺ©λ‘ μ 체λ₯Ό λΆμνκ³ κ²ν νμ¬, νμ μ μλ‘μ΄ μμ΄μ νΈλ₯Ό μΆκ° ꡬμ±νκ±°λ κΈ°μ‘΄ μμ΄μ νΈμ κ°λ Ή(Persona)κ³Ό μ€ν¬λ€μ 보μ λ° λ¦¬ν©ν λ§νκ³ μ ν λ.
- μΌμΌμ΄ μμΌλ‘ νλΆ ν΄λλ₯Ό λ§λ€κ³
SKILL.mdλ₯Ό μ±μ λ£λ λ°λ³΅ μμ μ μλννκ³ μΆμ λ.
Instructions
μ΄ μ€ν¬μ΄ κ°λλλ©΄ μμ΄μ νΈλ μλ κ·μΉμ λ§μΆ° μ κ΅ν μ€κ³, κ²ν λ° νμΌ μμ±μ μ²λ¦¬ν΄μΌ ν©λλ€.
[!IMPORTANT] ꡬν κ³νμ(Implementation Plan) μμ± μλ΅: νλ€μ€ μ€ν¬ μμ μμλ λ³λμ ꡬν κ³νμ(implementation_plan.md) μμ±μ μꡬνκ±°λ λκΈ°νμ§ μκ³ , λ°λ‘ λλ©μΈ λΆμκ³Ό μν€ν μ² μ€κ³λ₯Ό μλ£ν λ€ κ³§λ°λ‘ μμ΄μ νΈ λ° μ€ν¬ ꡬμ±μ μ¦μ μ€ν(μμ±/μ λ°μ΄νΈ)ν©λλ€.
1. κΈ°μ‘΄ μμ΄μ νΈ λ° μ€ν¬ μν μ§λ¨ (Review Phase)
- νλ‘μ νΈ λ£¨νΈμ μ΄λ―Έ
AGENTS.mdλλ.agents/λλ ν λ¦¬κ° μ‘΄μ¬νλ κ²½μ°, κΈ°μ‘΄μ μ€κ³λ μμ΄μ νΈλ€μ μν , λ΄λΉ μ 무 λ° λ±λ‘λ 컀μ€ν μ€ν¬ μ 체 ꡬ쑰λ₯Ό μ λ°νκ² λΆμν©λλ€.
2. μ¬μ©μ μꡬμ¬ν λμΆ λ° κ²©μ°¨ λΆμ (Gap Analysis)
- μ¬μ©μμ λλ©μΈ μꡬμ¬νκ³Ό κΈ°μ μ€νμ λ°νμΌλ‘ κΈ°μ‘΄ ν ꡬμ±μ λΉν(Gap)μ νμ ν©λλ€.
- μ΄λ₯Ό ν΄κ²°νκΈ° μν΄ μΆκ°λ‘ ꡬμ±ν΄μΌ ν μ λ¬Έ μμ΄μ νΈ μν κ΅°(μ: μ±λ₯ λͺ¨λν°λ§, 보μ κ°μ¬ λ±)μ΄λ κΈ°μ‘΄ μμ΄μ νΈμ 보μμ± μ λμΆνκ³ , μ΄λ€μ΄ νμ μμ νμ©ν μλ‘μ΄ ν΅μ¬ μ€ν¬ λ° κΈ°μ‘΄ μ€ν¬μ κ°μ μ μ κΈ°νν©λλ€.
3. νλ‘μ νΈ ν΄λ νμ μ€μΊν΄λ© λ° μ μ§μ μ λ°μ΄νΈ κ·μΉ
1) ν΅ν© μμ΄μ νΈ κ°μ΄λλΌμΈ (/AGENTS.md)
- νλ‘μ νΈ λ£¨νΈ λλ ν 리μ μμ± λλ μ λ°μ΄νΈν©λλ€.
- κΈ°μ‘΄μ μμ΄μ νΈ μ 보 λ° μ»¨λ²€μ μ μ΅λν 보쑴νλ©΄μ, μλ‘κ² λ³΄μ/μΆκ°λλ μμ΄μ νΈμ μν λͺ μΈ λ° μ λ°μ΄νΈλ νμ κ·μΉμ λμ λ°μνμ¬ μ λ°μ΄νΈν©λλ€.
- [Change History] νλ€μ€ ꡬμ±μ΄ μλ£λκ±°λ μ
λ°μ΄νΈλ λλ§λ€ λ³κ²½ μΌμ, κ΅¬μ± μ ν(μ κ·/μμ ), μμ΄μ νΈ ν κ΅¬μ± λμ΄λ, μ£Όμ λ³κ²½ μ¬ν(μΆκ°/μμ λ μμ΄μ νΈ λ° μ€ν¬ λͺ©λ‘)μ κΈ°λ‘νλ κ΅¬μ± λ³κ²½ μ΄λ ₯(Change History) μΉμ
μ
AGENTS.mdνμΌ νλ¨μ λμ νμ¬ ν(Table) λλ λͺ©λ‘ ννλ‘ μμΈν κΈ°μ νλλ‘ λ°μν΄μΌ ν©λλ€.
2) κ°λ³ μμ΄μ νΈ μμΈ λͺ
μΈ (.agents/agents/<AgentName>.md)
.agents/agents/λλ ν 리μ κ°λ³ λ§ν¬λ€μ΄ νμΌλ‘ μμ±νκ±°λ κΈ°μ‘΄ νμΌμ μ λ°μ΄νΈν©λλ€.- μλ¨μ YAML Frontmatter(
name,role,description)λ₯Ό ν¬ν¨νκ³ λ°λμ ꡬ체μ μΈ νλ κ°μ΄λλ₯Ό μμ±ν©λλ€.
3) κ°λ³ μμ΄μ νΈ μ€ν νλ‘ν (.agents/agents/<agent_name>/agent.json)
- κ° μμ΄μ νΈ ν΄λμ
agent.jsonνμΌμ μμ±νμ¬ μμ΄μ νΈμ λ°νμ μ§μΉ¨κ³Ό κΆνμ κΈ°μ¬ν©λλ€. - Antigravity CLIμ μ΅μ νλ«(Flat) JSON μ€νμ λ°λμ μ€μνμ¬ μ μΈν©λλ€:
{ "name": "μμ΄μ νΈ μ΄λ¦", "description": "μμ΄μ νΈ μν μ€λͺ ", "system_prompt": "μμ€ν μ§μΉ¨ λ° νμ SOP μμΈ κΈ°μ ", "enable_write_tools": true, // μ°κΈ° λ° λͺ λ Ήμ΄ μ€ν λꡬ μ¬μ© μ¬λΆ "enable_mcp_tools": true, // MCP μ°λ λꡬ μ¬μ© μ¬λΆ "enable_subagent_tools": false // νμ μμ΄μ νΈ κΈ°λ λꡬ μ¬μ© μ¬λΆ }
4) νμ€ κ·κ²© μ€ν¬λ€ (.agents/skills/<skill-folder>/SKILL.md)
- μΆκ° λ° λ³΄μλλ μ€ν¬ μ΄λ¦μ μΌλ°₯ μΌμ΄μ€(kebab-case)λ‘ μ§μ νκ³ κ°λ³ ν΄λλ₯Ό μμ±/μ νν©λλ€.
- κ° ν΄λ λ΄μ λ°λμ
SKILL.mdνμΌλͺ μΌλ‘ μμ± λλ μμ ν©λλ€. - νμΌ μλ¨μ νμ YAML Frontmatterλ₯Ό μ±μ λ£μ΅λλ€:
--- name: <kebab-case-name> description: <3μΈμΉ μμ μ κΈ°λ₯ μ€λͺ λ° νΈλ¦¬κ±° 쑰건 ν¬ν¨> allowed-tools: - <νμ©ν λꡬ 1> - <νμ©ν λꡬ 2> --- - λ°λμλ λ°λμ μλμ 3λ νμ ν€λλ₯Ό ν¬ν¨μν΅λλ€:
## When to use this skill(μΈμ νΈμΆν΄μΌ νλμ§ μν©κ³Ό νΈλ¦¬κ±° μ μ)## Instructions(λμμ νμν μΈλΆ ν둬ννΈ μ§μΉ¨)## Workflow(μμ΄μ νΈκ° μ€νν΄μΌ ν μμ°¨μ μν μ μ°¨)
5) μ€κ° κ²°κ³Όλ¬Ό λ° μ°μΆλ¬Ό 보κ΄μ© μμ
κ³΅κ° (_workspace/)
- νλ€μ€λ‘ λΉλλλ λͺ¨λ μμ΄μ νΈλ€μ΄ νμ€ν¬λ₯Ό μννλ©΄μ μμ±νλ λͺ¨λ μ€κ° μμ€μ½λ, λΆμ νμΌ, μμ μ°μΆλ¬Ό, μμ λ°μ΄ν°μ
λ° μ€ν κ²°κ³Όλ λ°λμ νλ‘μ νΈ λ£¨νΈ νμμ
_workspace/ν΄λλ₯Ό μμ±νκ³ κ·Έ νμμ κΈ°λ‘μ λ¨κΈ°λλ‘ ν΄μΌ ν©λλ€. - μ΄λ νλ‘μ νΈμ ν΅μ¬ μμ€ νΈλ¦¬λ₯Ό κΉ¨λνκ² λ³΄μ‘΄νκ³ , μμ΄μ νΈκ° μμ±νλ μμ μ°μΆλ¬Όμ μμ νκ² κ²©λ¦¬/κ΄λ¦¬νκΈ° μν¨μ
λλ€. ꡬμ±νλ λͺ¨λ μμ΄μ νΈμ κ°λ Ή(Persona) λ° μ€ν¬λ€μ λμ μ μ μ μ€κ° κ²°κ³Όλ¬Ό κ²½λ‘κ° νμ μ΄
_workspace/λλ ν 리λ₯Ό ν₯νλλ‘ μμ€ν ν둬ννΈμ μ§μΉ¨μ κ°λ ₯νκ² μ€κ³ν΄μΌ ν©λλ€.
4. μμ΄μ νΈ μ€μΌμ€νΈλ μ΄μ μν€ν μ² ν¨ν΄ μ€κ³ κ°μ΄λ
λλ©μΈ 볡μ‘μ±κ³Ό νμ€ν¬ μꡬμ λΆν©νλλ‘ μμ΄μ νΈ κ°μ κ΄κ³λ₯Ό μ€κ³ν λ μλ 6κ°μ§ ν΅μ¬ μ€μΌμ€νΈλ μ΄μ
μν€ν
μ² ν¨ν΄ μ€ μ΅μ μ ꡬμ±μ λͺ
μνκ³ , μ΄λ₯Ό AGENTS.mdμ 곡μν λ° κ΅¬μ‘°νν΄μΌ ν©λλ€:
- Pipeline (νμ΄νλΌμΈ): μμ°¨μ μΈ μ§λ ¬ μμ νλ¦ (μ: μ€ν μ μ -> μ½λ ꡬν -> κ²μ¦).
- Fan-out/Fan-in (λΆμ° λ° λ³λ ¬ μ²λ¦¬): λ³λ ¬λ‘ λ 립μ μΈ νμ€ν¬λ₯Ό μ²λ¦¬ν ν, μ΅μ’ μ·¨ν©νλ λ°©μ.
- Expert Pool (μ λ¬Έκ° μ ν ν): λΉλ©΄ν νμ€ν¬ μ νμ λ°λΌ μ ν©ν μ λ¬Έκ° μμ΄μ νΈλ₯Ό ν(Pool)μμ λμ μΌλ‘ μ ν.
- Producer-Reviewer (μμ±μ λ° κ²ν μ): μμ± λ΄λΉ μμ΄μ νΈμ μ΄λ₯Ό κ°μ¬/ν μ€νΈ/보μνλ μμ΄μ νΈμ 2λ¨κ³ νμ ꡬ쑰.
- Supervisor (κ°λ κ΄): μ€μμμ λ§μ€ν° μμ΄μ νΈκ° μ€μκ°μΌλ‘ νλΆ νμ€ν¬λ₯Ό λμ λμ€ν¨μΉ λ° ν΅μ .
- Hierarchical Delegation (κ³μΈ΅μ μμ): 볡μ‘ν λκ·λͺ¨ νμ€ν¬λ₯Ό νμ μλΈμμ΄μ νΈλ€μκ² μ¬κ·μ μΌλ‘ μͺΌκ°μ΄ μμ.
5. Antigravity CLI μ΅μ ν λ°νμ λ° λ©μμ§ κ·κ²© (Runtime Collaboration Protocol)
μμ΄μ νΈλ€μ Antigravity CLI λ°νμ μμμ λ¨μν μ μ μΌλ‘ λκΈ°νμ§ μκ³ , κ³ λνλ μ°λ λꡬ API λ° μ€μκ° ν΅μ κ·κ²© νλ‘ν μ½μ μ¬μ©νμ¬ μνΈ νμ ν΄μΌ ν©λλ€.
1) λ°νμ μμ΄μ νΈ λΌμ΄νμ¬μ΄ν΄ κ΄λ¦¬
- μλΈμμ΄μ νΈ λ±λ‘ (
define_subagent): μμ΄μ νΈκ° λ°νμ μ€μ νμν μ λ¬Έ μμ(Name, Description, System Prompt λ° λꡬ κΆν νλκ·Έ)λ₯Ό λμ μΌλ‘ λ±λ‘ν©λλ€. μΈμ μ΄ μμλκ±°λ νλ‘μ νΈκ° λ‘λλ λ, κΈ°μ‘΄.agents/agents/{agent_name}/agent.jsonνμΌμ μ μλ μμ΄μ νΈ νλ‘νμ λ‘λ©νμ¬define_subagentλꡬλ₯Ό ν΅ν΄ μΈμ λ°νμμ μ μ μ μΌλ‘ μΌκ΄ λ±λ‘ν΄ μ€λλ€. - μλΈμμ΄μ νΈ κΈ°λ (
invoke_subagent): μ€μκ° λ³λ ¬ νμ€ν¬ μ€νμ΄ νμν κ²½μ°invoke_subagentλ₯Ό ν΅ν΄ μμ΄μ νΈλ₯Ό λ°±κ·ΈλΌμ΄λμμ μ€ννκ³ λ°νλλ κ³ μ μ Conversation IDλ₯Ό νλνμ¬ νμ€ν¬ μ€ν νλ¦μ μ§νν©λλ€.
2) Antigravity CLI νμ€ λ©μμ§ νλ‘ν μ½
send_message ν΄μ μ¬μ©ν΄ 격리λ μμ΄μ νΈ κ°μ 컨ν
μ€νΈλ₯Ό λκΈ°ννκ³ μμ¬λ₯Ό μ λ¬ν λλ, νμ± λ° νμ μμ
μλνλ₯Ό μν΄ JSON κ΅¬μ‘°κ° λνλ νμ€ λ©μμ§ κ·κ²©μ μ¬μ©νμ¬ κ΅μ νλλ‘ μμ΄μ νΈ μμ€ν
ν둬ννΈμ λ΄μ¬νν©λλ€.
λ©μμ§ νμ΄λ‘λ ν¬λ§·(JSON) κ·κ²©:
{
"sender": "μ‘μ μμ΄μ νΈλͺ
",
"action": "μ‘μ
μ ν (REQUEST_REVIEW | TASK_COMPLETE | REFACTOR_REQUEST | STATUS_UPDATE)",
"target_artifact": "μμ
μ€μΈ λμ νμΌ κ²½λ‘ (μ λ κ²½λ‘)",
"content": "μμΈ ν
μ€νΈ μ€λͺ
λ° μμ² μ¬ν",
"metadata": {
"task_id": "μμ
μλ³μ© ID",
"status": "νμ¬ μν κ°",
"additional_context": "κΈ°ν μ°Έκ³ λ°μ΄ν°"
}
}
μμ΄μ νΈλ€μ send_message νΈμΆ μ μ΄ JSONμ λ¬Έμμ΄ ννλ‘ ν
μ€νΈ λ°λμ μ½μ
νμ¬ μ‘μ ν΄μΌ νλ©°, μ΄λ₯Ό μμ ν μλΈμμ΄μ νΈλ JSON λ°μ΄ν°λ₯Ό μ°μ νμ±νμ¬ λͺ©νλ¬Όκ³Ό μμ² μ¬μμ μ νν μλ³νκ³ λꡬ μμ
μ μνλλ‘ μ€κ³λμ΄μΌ ν©λλ€.
3) μ€μΌμ€νΈλ μ΄ν° μ€ν¬κ³Όμ μ κΈ°μ μ°λ
λ©μΈ μμ΄μ νΈμκ² μ₯μ°©λ μ€μΌμ€νΈλ μ΄ν° μ€ν¬μ μ 체 μλΈμμ΄μ νΈλ€μ κΈ°λ(invoke_subagent), λκΈ°, κ²°κ³Ό μν© λ° ν΅μ μ‘°μ¨μ κ΄λ¦¬ν΄μΌ νλ©°, κ° μλΈμμ΄μ νΈκ° λλ €μ£Όλ JSON νμμ νμ€ λ©μμ§ νμ΄λ‘λλ₯Ό ν΄μνμ¬ νμ λ¨κ³ μμ΄μ νΈ κΈ°λμ΄λ νΌλλ°± μ λ¬ λ±μ ν¨μ¨μ μΌλ‘ μ€μΌμ€νΈλ μ΄μ
ν©λλ€.
6. μ¬μ©μ μλ ¨λ(Skill Level)λ³ μ°¨λ± κ΅¬μ± μ§μΉ¨
μ¬μ©μμ μμ² μ¬ν λ° μμ€(μλ ¨λ)μ λΆμνμ¬ νλ€μ€ μμ΄μ νΈ ν ꡬμ±μ λμ΄λμ ꡬ쑰μ 볡μ‘μ±μ λ€μκ³Ό κ°μ΄ 3λ¨κ³λ‘ μ°¨λ±ννμ¬ μ€κ³ν©λλ€.
-
μ΄κΈ (Beginner):
- λͺ©μ : μ§κ΄μ μΈ μ΄ν΄μ λ¨μμ± κ·Ήλν.
- μν€ν μ²: λ¨μ νμ΄νλΌμΈ(Pipeline) λλ 1~2κ°μ μμ΄μ νΈλ‘ ꡬμ±λ λ¨μ μμ±μ-κ²ν μ(Producer-Reviewer) ν¨ν΄μ μ νν©λλ€.
- μ€ν¬ ꡬμ±: 볡μ‘ν λΉλκΈ°λ λΆκΈ° μ μ΄κ° μλ, ν΅μ¬ λμ μμ£Όμ μ½κ³ λͺ λ£ν 1~2κ° λ¨μ μ€ν¬λ‘ ꡬμ±ν©λλ€.
- μ€μΌμ€νΈλ μ΄μ : μ€μ λ©μΈ μμ΄μ νΈκ° λ¨μ μ μΌλ‘ νμ μμ΄μ νΈλ₯Ό μ°¨λ‘λ‘ κ΅¬λνμ¬ νΌλλ°±μ μ¬μ©μμκ² λ³΄μ¬μ£Όλ ννμ΄λ©° 볡μ‘ν λ³λ ¬/λΉλκΈ° νλ¦μ μλ΅ν©λλ€.
-
μ€κΈ (Intermediate):
- λͺ©μ : κΈ°λ₯μ λͺ¨λνμ ν¨μ¨μ μΈ μλ νμ .
- μν€ν μ²: μ λ¬Έκ° ν(Expert Pool) λλ νμ΄νλΌμΈ + μμ±μ-κ²ν μμ 볡ν©ν μν€ν μ²λ₯Ό μ μ©νλ©°, 2~3κ°μ κ°λ³ μ λ¬Ένλ μμ΄μ νΈλ₯Ό λ°°μΉν©λλ€.
- μ€ν¬ ꡬμ±: λ 립μ±κ³Ό μ¬μ¬μ©μ±μ΄ λμ κΈ°λ₯λ³ λͺ¨λ μ€ν¬λ‘ λΆλ¦¬νμ¬ μ€κ³ν©λλ€.
- μ€μΌμ€νΈλ μ΄μ : λͺ νν λ©μμ§ νλ‘ν μ½μ μ¬μ©ν μΈλ―Έ μ€ν λ©μ΄ν°λ νμ ꡬ쑰λ₯Ό κ°μΆκ³ , μμ΄μ νΈ κ° μμ°¨μ νΌλλ°±κ³Ό μμΈ μν© μ²λ¦¬λ₯Ό κ°μ΄λν©λλ€.
-
κ³ κΈ (Advanced/Expert):
- λͺ©μ : κ·Ήλνλ μλν, κ³ λμ μμΈ λ³΅κ΅¬, λ³λ ¬ μ²λ¦¬ λ° μμ¨μ±.
- μν€ν μ²: κ³μΈ΅μ μμ(Hierarchical Delegation) λλ κ°λ κ΄(Supervisor) ν¨ν΄ λ± λ³΅μ‘ν νμ΄λΈλ¦¬λ μν€ν μ²λ₯Ό μ€κ³νλ©°, 3κ° μ΄μμ κ³ λλ‘ λΆνλ μ λ¬Έ μμ΄μ νΈλ₯Ό ꡬμ±ν©λλ€.
- μ€ν¬ ꡬμ±: κ³ μ±λ₯ μμ¨ μ€ν, λ€μ΄λλ―Ή μν κ΄λ¦¬, λ³λ ¬ μ€ν 볡ꡬ λ₯λ ₯(Recovery Strategy)μ κ°μΆ κ³ κΈ μ€ν¬λ‘ μ±μλ£μ΅λλ€.
- μ€μΌμ€νΈλ μ΄μ
: λ©μΈ μμ΄μ νΈκ° λ°±κ·ΈλΌμ΄λλ‘ μ¬λ¬ μλΈ μμ΄μ νΈλ₯Ό λμμ κΈ°λ(Fan-out/Fan-in)νκ³ , λμ
define_subagentκΈ°λ λ° JSON κ·κ²© ν΅μ μ νμ©ν μμ μμ¨μ μνΈ νΌλλ°± 루νλ₯Ό ꡬμΆνμ¬ μλ¬ λ° μΆ©λ 볡ꡬ μ λ΅μ μ€μΌμ€νΈλ μ΄ν° μ€ν¬μ κΉμ΄ λ΄μ¬νν©λλ€.
Workflow
μ¬μ©μκ° νλ€μ€ μ€ν¬λ‘ μμ μ μμ²νλ©΄, μμ΄μ νΈλ λ°λμ μλμ 6λ¨κ³ μμμ λ°λΌ μμ μ μ λ°νκ² μ§νν΄μΌ ν©λλ€:
Step 1. μ¬μ©μ μμ² λλ©μΈ λΆμ (Domain Analysis)
- μ¬μ©μμ λͺ©ν μμ€ν λ° λλ©μΈ μꡬμ¬νκ³Ό κΈ°μ μ€νμ μλ²½ν λΆμν©λλ€.
- μ¬μ©μ μμ² λ¬Έλ§₯μ ν λλ‘ μ¬μ©μμ μλ ¨λ(μ΄κΈ/μ€κΈ/κ³ κΈ)λ₯Ό νλ³νμ¬ μ μ©ν μμ΄μ νΈ ν λ° μ€ν¬ ꡬμ±μ λμ΄λλ₯Ό μ€μ ν©λλ€.
Step 2. μμ΄μ νΈ ν μν€ν μ² μ€κ³ (Architecture Design)
- κ²°μ λ λμ΄λ(μλ ¨λ)μ λΆν©νλ μ΅μ μ μ€μΌμ€νΈλ μ΄μ μν€ν μ² ν¨ν΄μ μ€κ³ν©λλ€.
- μμ΄μ νΈ κ°μ κ΄κ³, λ°μ΄ν° νλ¦, νΈμΆ μμλ₯Ό μ¬μ©μκ° μ§κ΄μ μΌλ‘ μ΄ν΄ν μ μλλ‘
AGENTS.mdμ λͺ νν κΈ°μ νμ¬ μ€κ³μμ ꡬ쑰νν©λλ€.
Step 3. μμ΄μ νΈ κ΅¬μ± (Agent Configuration)
- μν€ν
μ² μ€κ³μ μ μλ μ λ¬Έ μμ΄μ νΈλ€μ λ§ν¬λ€μ΄ νμΌ(
.agents/agents/<AgentName>.md) λ° Antigravity flat κ·κ²©μ μ€μνagent.jsonνλ‘ν νμΌμ ꡬμ±ν©λλ€. - νλ‘μ νΈ λ£¨νΈ λλ ν 리μ μ 체 μμ΄μ νΈ κ°μ΄λλΌμΈμΈ
AGENTS.mdλ₯Ό μ κ· μμ±νκ±°λ κΈ°μ‘΄ 컨벀μ μ κΉ¨λ¨λ¦¬μ§ μμΌλ©΄μ μ μ§μ μΌλ‘ μ λ°μ΄νΈν©λλ€. μ΄ κ³Όμ μμ μ€μΌμ€νΈλ μ΄ν° μ€ν¬(orchestrator)μ κ°λνμ¬ μ¬μ©μκ° λ΄λ¦° μμ λͺ λ Ή(μ: νλ€μ€ μλ κΈ°ν λ° κΈ°μ μ°κ΅¬)μ μ€μ§μ μΌλ‘ μ€ννκ³ μ²λ¦¬νλ ꡬ체μ μΈ κ΅¬λ μ§μΉ¨ λ° μ¬μ©μ λνν μ‘°μ λ§€λ΄μΌμ κ΄ν μ€λͺ μΉμ μ λ°λμ μΆκ°ν΄μΌ ν©λλ€.
Step 4. μμ΄μ νΈλ€μ΄ μ¬μ©ν μ€ν¬ κ΅¬μ± (Skill Configuration)
- κ° μμ΄μ νΈκ° μ 무 μν μ μ§μ νμ¬νκ³ λμν 컀μ€ν μ€ν¬ λͺ©λ‘μ νμ ν©λλ€.
.agents/skills/<skill-folder>/SKILL.mdλλ ν 리 νμμ νμ€ κ·κ²©(Frontmatter λ° When to use, Instructions, Workflow 3λ ν€λ)μ μ격ν μ€μν μ€ν¬ νμΌλ€μ μμ±νκ±°λ κΈ°μ‘΄ ꡬ쑰λ₯Ό μ λ° λ¦¬ν©ν λ§ν©λλ€.
Step 5. μ€μΌμ€νΈλ μ΄ν° μ€ν¬ κ΅¬μ± (Orchestrator Skill Configuration)
- μμ΄μ νΈλ€μ΄ μ κΈ°μ μ΄κ³ ν¨κ³Όμ μΌλ‘ μνΈμμ©νλ©° μλν 루νλ₯Ό λ μ μλλ‘ Antigravity CLI λ©μΈ μμ΄μ νΈμκ² μ₯μ°©ν μ€μΌμ€νΈλ μ΄ν° μ€ν¬μ μ μ©μΌλ‘ ꡬμ±ν©λλ€.
.agents/skills/orchestrator/SKILL.mdκ²½λ‘μ μ€μΌμ€νΈλ μ΄ν° μ€ν¬ νμΌμ μμ±νκ³ , λ©μΈ μμ΄μ νΈκ° μλΈ μμ΄μ νΈλ€μ κΈ°λ(invoke_subagent), ν΅μ λ° λ©μμ§(send_message) μ²λ¦¬νμ¬ νμ 루νλ₯Ό μ§ννκ³ μ€ν¨ μ λμνλ ꡬ체μ μΈ SOPμ ν둬ννΈ μ§μΉ¨μ ꡬνν©λλ€. μ΄ κ³Όμ μμ νμ¬ ν΄λΉ νλ€μ€ μμ€ν μ λ°°ν¬λκ³ μ°λλ μ 체 μλΈ μμ΄μ νΈ λͺ μΈ(μ΄λ¦, μν )μ κ°λ³ μμ΄μ νΈλ€μ΄ μμ ν 컀μ€ν μ€ν¬(μ΄λ¦, μλν μ무)μ λν μμΈν κΈ°μ μ μ€λͺ λͺ μΈ λͺ©λ‘μ μ€μΌμ€νΈλ μ΄ν° μ€ν¬ λ³Έλ¬Έμ λͺ μμ μΌλ‘ μ½μ ν΄μΌ ν©λλ€.
Step 6. νλ€μ€ κ΅¬μ± κ²ν λ° ν μ€νΈ (Review & Test)
- μμ± λλ μ λ°μ΄νΈλ νλ€μ€ ꡬ쑰(μμ΄μ νΈ νλ‘ν, μ€ν¬ λ§ν¬λ€μ΄)κ° Antigravity νμ€ κ·κ²©μ λ§κ² μ μ¬λμλμ§ μ΅μ’ μ κ²ν©λλ€.
- [CRITICAL] μμ΄μ νΈ μ¦μ λ±λ‘: νλ€μ€ μ€ν¬ μν μμ΄μ νΈλ κ΅¬μ± μλ£ λ¨κ³μμ λ°λμ μμ±λ λͺ¨λ μμ΄μ νΈμ νλ‘ν(
.agents/agents/{agent_name}/agent.json) νμΌμ μ§μ μ½κ³ νμ±νμ¬,define_subagentλꡬλ₯Ό μ€μ λ‘ νΈμΆν΄μ νμ¬ λν μΈμ λ°νμμ μμ΄μ νΈλ€μ μ€μ§μ μΌλ‘ μ¦μ λ±λ‘ν΄μΌ ν©λλ€. (μμ΄μ νΈ λ±λ‘ λλ½ λ°©μ§) invoke_subagentλ°send_messageλ₯Ό κ°μμΌλ‘ μλμμΌ μμ΄μ νΈ κ°μ μμ¨μ ν΅μ λ° μ€μΌμ€νΈλ μ΄ν° μ€ν¬μ νμ μλ리μ€κ° μλ¬ μμ΄ μ λ§€λλ½κ² νλ₯΄λμ§ μ² μ ν ν μ€νΈνκ³ κ²μ¦ν©λλ€.- λͺ¨λ ν μ€νΈμ μμ μ΄ μλ£λλ©΄, μμ΄μ νΈ λ° μ€ν¬ ꡬ쑰 νΈλ¦¬ λ§΅(Tree Map)μ μκ°μ μΌλ‘ μ½μμ μΆλ ₯νκ³ , μ¬μ©μκ° μ΄λ²μ ꡬμΆλ μμ΄μ νΈ νκ³Ό μ€ν¬λ€μ μ μν μΈμ§ν μ μλλ‘ λ¦¬λ·°λ₯Ό μν μ 보λ₯Ό κ΅°λλκΈ° μμ΄ μ§§κ³ λͺ λ£νκ² μμ±νμ¬ μ μν΄μΌ ν©λλ€. μ΄ κ³Όμ μμ μλ‘κ² κ΅¬μΆλ κ° μ»€μ€ν μ€ν¬λ€μ κ³ μ 'μ€ν¬λͺ (kebab-case)'κ³Ό μ΄λ€μ΄ λ΄λΉνλ λͺ νν κΈ°μ μ μν , ν΅μ¬ κΈ°λ₯(μ: μ΄λ€ μΌμ μλννλμ§ 1μ€ ν΅μ¬ μμ½)μ λν μΈλΆ μ€λͺ μ λλ½ μμ΄ λͺ μνμ¬ μ 곡ν΄μΌ ν©λλ€. (λ¨μν νμΌ κ²½λ‘(SKILL.md)λ₯Ό κ·Έλλ‘ λ ΈμΆνμ¬ μ€λͺ νλ λμ , μ¬μ©μκ° μΈμ§νκΈ° μ½λλ‘ κ³΅μ μ€ν¬λͺ μ νμ€νκ² λ³΄μ¬μ£Όμ΄μΌ ν©λλ€)
- λ§μ§λ§μΌλ‘, μ¬μ©μκ° λ¦¬λ·° ν μ΄μμ΄ μμ μ νμ¬ κ΅¬μΆλ νλ€μ€λ₯Ό μ€μ λ‘ κ°λν μ μλλ‘, ν°λ―Έλ μ Έ λͺ λ Ήμ΄ λμ Antigravity CLI λνμ°½ μμμ κ°λ¨ν μμ°μ΄ ν둬ννΈ(μ: "νλ€μ€ κΈ°ν νμ μ μμν΄μ€", "νλ€μ€ μ°κ΅¬ λ³΄κ³ μμ κ΅μ‘ κ³Όμ μ ꡬμΆν΄μ€" λ± μ§κ΄μ μΈ λν μλ리μ€)λ‘ μμ μ μ§μνκ³ μ μ΄νλ ꡬ체μ μΈ λν μμλ₯Ό μ΅μ’ νμ© κ°μ΄λ μλ΄ λ¬Έκ΅¬μ λ°λμ ν¬ν¨νμ¬ λ§λ¬΄λ¦¬ν©λλ€.