aidlc-studio 0.1.0__py3-none-any.whl
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.
- aidlc_studio/__init__.py +3 -0
- aidlc_studio/cli.py +304 -0
- aidlc_studio/pack/.claude/agents/architecture.md +51 -0
- aidlc_studio/pack/.claude/agents/assess.md +50 -0
- aidlc_studio/pack/.claude/agents/brief.md +47 -0
- aidlc_studio/pack/.claude/agents/cloud-aws.md +63 -0
- aidlc_studio/pack/.claude/agents/cloud-azure.md +64 -0
- aidlc_studio/pack/.claude/agents/cloud-gcp.md +61 -0
- aidlc_studio/pack/.claude/agents/cloud-onprem.md +68 -0
- aidlc_studio/pack/.claude/agents/code-reviewer.md +44 -0
- aidlc_studio/pack/.claude/agents/coder.md +54 -0
- aidlc_studio/pack/.claude/agents/connector-advisor.md +47 -0
- aidlc_studio/pack/.claude/agents/data-science.md +47 -0
- aidlc_studio/pack/.claude/agents/dev-spec.md +47 -0
- aidlc_studio/pack/.claude/agents/discovery.md +52 -0
- aidlc_studio/pack/.claude/agents/domain-advisor.md +51 -0
- aidlc_studio/pack/.claude/agents/eval.md +42 -0
- aidlc_studio/pack/.claude/agents/intake.md +59 -0
- aidlc_studio/pack/.claude/agents/model-selector.md +51 -0
- aidlc_studio/pack/.claude/agents/observability.md +44 -0
- aidlc_studio/pack/.claude/agents/orchestrator.md +95 -0
- aidlc_studio/pack/.claude/agents/poc-gate.md +43 -0
- aidlc_studio/pack/.claude/agents/process-map.md +46 -0
- aidlc_studio/pack/.claude/agents/production.md +48 -0
- aidlc_studio/pack/.claude/agents/value-prop.md +44 -0
- aidlc_studio/pack/.claude/skills/aidlc/SKILL.md +98 -0
- aidlc_studio/pack/.claude/skills/breaking-down-work/SKILL.md +9 -0
- aidlc_studio/pack/.claude/skills/business-case-math/SKILL.md +9 -0
- aidlc_studio/pack/.claude/skills/clarify-then-commit/SKILL.md +9 -0
- aidlc_studio/pack/.claude/skills/evaluating-options/SKILL.md +9 -0
- aidlc_studio/pack/.claude/skills/immutable-audit-trail/SKILL.md +8 -0
- aidlc_studio/pack/.claude/skills/observability-first/SKILL.md +9 -0
- aidlc_studio/pack/.claude/skills/planning-before-coding/SKILL.md +9 -0
- aidlc_studio/pack/.claude/skills/reviewing-a-diff/SKILL.md +9 -0
- aidlc_studio/pack/.claude/skills/safe-rollout/SKILL.md +9 -0
- aidlc_studio/pack/.claude/skills/socratic-brainstorm/SKILL.md +10 -0
- aidlc_studio/pack/.claude/skills/test-driven-implementation/SKILL.md +9 -0
- aidlc_studio/pack/.claude/skills/test-first-verification/SKILL.md +10 -0
- aidlc_studio/pack/.claude/skills/wiring-integrations/SKILL.md +9 -0
- aidlc_studio/pack/.claude/skills/writing-a-spec/SKILL.md +10 -0
- aidlc_studio/pack/.cursor/rules/applied-ai-studio.mdc +33 -0
- aidlc_studio/pack/AGENTS.md +61 -0
- aidlc_studio/pack/ARCHITECTURE.md +132 -0
- aidlc_studio/pack/CONSTITUTION.md +99 -0
- aidlc_studio/pack/QUALITY_BAR.md +72 -0
- aidlc_studio/pack/SKILLS.md +59 -0
- aidlc_studio/pack/artifacts/README.md +23 -0
- aidlc_studio/pack/artifacts/templates/01-prd.md +31 -0
- aidlc_studio/pack/artifacts/templates/02-process-map.md +22 -0
- aidlc_studio/pack/artifacts/templates/03-assessment.md +29 -0
- aidlc_studio/pack/artifacts/templates/04-business-case.md +37 -0
- aidlc_studio/pack/artifacts/templates/05-architecture.md +37 -0
- aidlc_studio/pack/artifacts/templates/06-ai-spec.md +44 -0
- aidlc_studio/pack/artifacts/templates/07-data-science.md +27 -0
- aidlc_studio/pack/artifacts/templates/08-evals.md +29 -0
- aidlc_studio/pack/artifacts/templates/09-poc-gate.md +28 -0
- aidlc_studio/pack/artifacts/templates/10-production.md +29 -0
- aidlc_studio/pack/artifacts/templates/11-observability.md +37 -0
- aidlc_studio/pack/artifacts/templates/12-delivery-brief.md +41 -0
- aidlc_studio/pack/connectors/README.md +29 -0
- aidlc_studio/pack/connectors/bedrock.md +24 -0
- aidlc_studio/pack/connectors/bigquery.md +22 -0
- aidlc_studio/pack/connectors/catalog.json +31 -0
- aidlc_studio/pack/connectors/databricks.md +21 -0
- aidlc_studio/pack/connectors/mcp.example.json +50 -0
- aidlc_studio/pack/connectors/snowflake.md +24 -0
- aidlc_studio/pack/docs/INSTALL.md +215 -0
- aidlc_studio/pack/docs/architecture.html +201 -0
- aidlc_studio/pack/docs/diagrams.md +134 -0
- aidlc_studio/pack/domains/financial-services.md +38 -0
- aidlc_studio/pack/domains/healthcare.md +36 -0
- aidlc_studio/pack/domains/index.json +54 -0
- aidlc_studio/pack/domains/insurance.md +38 -0
- aidlc_studio/pack/domains/manufacturing.md +38 -0
- aidlc_studio/pack/exemplar/claims-idp/artifacts/01-prd.md +161 -0
- aidlc_studio/pack/exemplar/claims-idp/artifacts/02-process-map.md +139 -0
- aidlc_studio/pack/exemplar/claims-idp/artifacts/03-assessment.md +144 -0
- aidlc_studio/pack/exemplar/claims-idp/artifacts/04-business-case.md +148 -0
- aidlc_studio/pack/exemplar/claims-idp/artifacts/05-architecture.md +207 -0
- aidlc_studio/pack/exemplar/claims-idp/artifacts/06-ai-spec.md +271 -0
- aidlc_studio/pack/exemplar/claims-idp/artifacts/07-data-science.md +159 -0
- aidlc_studio/pack/exemplar/claims-idp/artifacts/08-evals.md +141 -0
- aidlc_studio/pack/exemplar/claims-idp/artifacts/09-poc-gate.md +121 -0
- aidlc_studio/pack/exemplar/claims-idp/artifacts/10-production.md +121 -0
- aidlc_studio/pack/exemplar/claims-idp/artifacts/11-observability.md +145 -0
- aidlc_studio/pack/exemplar/claims-idp/artifacts/12-delivery-brief.md +141 -0
- aidlc_studio/pack/exemplar/claims-idp/artifacts/metrics.json +221 -0
- aidlc_studio/pack/pipelines/dev-pipeline.md +52 -0
- aidlc_studio/pack/registry/agents.json +38 -0
- aidlc_studio/pack/registry/frameworks.json +59 -0
- aidlc_studio/pack/registry/phases.json +43 -0
- aidlc_studio/pack/registry/skills.json +39 -0
- aidlc_studio/pack/registry/stages.json +138 -0
- aidlc_studio-0.1.0.dist-info/METADATA +163 -0
- aidlc_studio-0.1.0.dist-info/RECORD +97 -0
- aidlc_studio-0.1.0.dist-info/WHEEL +4 -0
- aidlc_studio-0.1.0.dist-info/entry_points.txt +2 -0
aidlc_studio/__init__.py
ADDED
aidlc_studio/cli.py
ADDED
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
"""aidlc — install the Applied AI Studio agent pack into any project, for any IDE.
|
|
2
|
+
|
|
3
|
+
Usage:
|
|
4
|
+
uvx aidlc init [PATH] --ide all # scaffold everything
|
|
5
|
+
uvx aidlc init [PATH] --ide claude # Claude Code custom agents + skills
|
|
6
|
+
uvx aidlc init [PATH] --ide cursor # Cursor rules + AGENTS.md
|
|
7
|
+
uvx aidlc init [PATH] --ide copilot # VS Code Copilot chatmodes + AGENTS.md
|
|
8
|
+
uvx aidlc init [PATH] --ide antigravity # AGENTS.md (Antigravity/Windsurf standard)
|
|
9
|
+
aidlc list # show the 23-agent roster
|
|
10
|
+
aidlc check [PATH] # verify an install
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
from __future__ import annotations
|
|
14
|
+
|
|
15
|
+
import argparse
|
|
16
|
+
import json
|
|
17
|
+
import shutil
|
|
18
|
+
import sys
|
|
19
|
+
from pathlib import Path
|
|
20
|
+
|
|
21
|
+
IDES = ("all", "claude", "cursor", "copilot", "antigravity", "windsurf")
|
|
22
|
+
|
|
23
|
+
# Core files every IDE flavor needs: the constitution, methodology, registry,
|
|
24
|
+
# templates, connectors, domains, and the cross-tool AGENTS.md entry point.
|
|
25
|
+
CORE = [
|
|
26
|
+
"AGENTS.md",
|
|
27
|
+
"CONSTITUTION.md",
|
|
28
|
+
"ARCHITECTURE.md",
|
|
29
|
+
"SKILLS.md",
|
|
30
|
+
"QUALITY_BAR.md",
|
|
31
|
+
"exemplar",
|
|
32
|
+
"registry",
|
|
33
|
+
"artifacts",
|
|
34
|
+
"connectors",
|
|
35
|
+
"domains",
|
|
36
|
+
"pipelines",
|
|
37
|
+
"docs",
|
|
38
|
+
]
|
|
39
|
+
|
|
40
|
+
PER_IDE = {
|
|
41
|
+
"claude": [".claude"],
|
|
42
|
+
"cursor": [".cursor"],
|
|
43
|
+
"copilot": [], # chatmodes are generated from the agent files at init time
|
|
44
|
+
"antigravity": [], # AGENTS.md standard only
|
|
45
|
+
"windsurf": [], # AGENTS.md standard only
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def pack_root() -> Path:
|
|
50
|
+
"""Locate the bundled pack (wheel install) or the repo itself (dev checkout)."""
|
|
51
|
+
bundled = Path(__file__).resolve().parent / "pack"
|
|
52
|
+
if bundled.is_dir():
|
|
53
|
+
return bundled
|
|
54
|
+
repo = Path(__file__).resolve().parents[2]
|
|
55
|
+
if (repo / "CONSTITUTION.md").is_file():
|
|
56
|
+
return repo
|
|
57
|
+
sys.exit("aidlc: could not locate the agent pack (broken install?)")
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def copy_item(src: Path, dst: Path, force: bool) -> int:
|
|
61
|
+
"""Copy a file or tree, skipping existing files unless --force. Returns files written."""
|
|
62
|
+
written = 0
|
|
63
|
+
if src.is_dir():
|
|
64
|
+
for f in sorted(src.rglob("*")):
|
|
65
|
+
if f.is_dir() or "__pycache__" in f.parts:
|
|
66
|
+
continue
|
|
67
|
+
target = dst / f.relative_to(src)
|
|
68
|
+
if target.exists() and not force:
|
|
69
|
+
continue
|
|
70
|
+
target.parent.mkdir(parents=True, exist_ok=True)
|
|
71
|
+
shutil.copy2(f, target)
|
|
72
|
+
written += 1
|
|
73
|
+
elif src.is_file():
|
|
74
|
+
if dst.exists() and not force:
|
|
75
|
+
return 0
|
|
76
|
+
dst.parent.mkdir(parents=True, exist_ok=True)
|
|
77
|
+
shutil.copy2(src, dst)
|
|
78
|
+
written = 1
|
|
79
|
+
return written
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def parse_frontmatter(text: str) -> tuple[dict, str]:
|
|
83
|
+
"""Minimal YAML-ish frontmatter parser (name/description/model keys)."""
|
|
84
|
+
meta: dict = {}
|
|
85
|
+
body = text
|
|
86
|
+
if text.startswith("---"):
|
|
87
|
+
parts = text.split("---", 2)
|
|
88
|
+
if len(parts) >= 3:
|
|
89
|
+
body = parts[2].lstrip("\n")
|
|
90
|
+
for line in parts[1].splitlines():
|
|
91
|
+
if ":" in line:
|
|
92
|
+
k, _, v = line.partition(":")
|
|
93
|
+
meta[k.strip()] = v.strip()
|
|
94
|
+
return meta, body
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def generate_chatmodes(pack: Path, target: Path, force: bool) -> int:
|
|
98
|
+
"""VS Code Copilot: turn each agent into .github/chatmodes/<name>.chatmode.md."""
|
|
99
|
+
written = 0
|
|
100
|
+
agents_dir = pack / ".claude" / "agents"
|
|
101
|
+
out_dir = target / ".github" / "chatmodes"
|
|
102
|
+
for agent_file in sorted(agents_dir.glob("*.md")):
|
|
103
|
+
meta, body = parse_frontmatter(agent_file.read_text(encoding="utf-8"))
|
|
104
|
+
name = meta.get("name", agent_file.stem)
|
|
105
|
+
desc = meta.get("description", "").replace("\n", " ")[:500]
|
|
106
|
+
out = out_dir / f"{name}.chatmode.md"
|
|
107
|
+
if out.exists() and not force:
|
|
108
|
+
continue
|
|
109
|
+
out.parent.mkdir(parents=True, exist_ok=True)
|
|
110
|
+
out.write_text(f"---\ndescription: {desc}\n---\n{body}", encoding="utf-8")
|
|
111
|
+
written += 1
|
|
112
|
+
return written
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
GLOBAL_NOTE = """
|
|
116
|
+
## Global install note
|
|
117
|
+
This agent is installed user-globally. Its support files live in `~/.claude/aidlc/`:
|
|
118
|
+
- Constitution: `~/.claude/aidlc/CONSTITUTION.md` (read it FIRST, always)
|
|
119
|
+
- Registries: `~/.claude/aidlc/registry/` (stages.json · agents.json · skills.json)
|
|
120
|
+
- Artifact templates: `~/.claude/aidlc/artifacts/templates/`
|
|
121
|
+
- Skills: `~/.claude/skills/<name>/SKILL.md`
|
|
122
|
+
- Domains / connectors / pipelines: `~/.claude/aidlc/`
|
|
123
|
+
If the current project has its own copies (a project-scoped install), prefer those.
|
|
124
|
+
Write stage artifacts into the current project's `artifacts/` directory.
|
|
125
|
+
"""
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
def cmd_global(pack: Path, force: bool, roster: str = "solo") -> None:
|
|
129
|
+
"""Install user-globally: agents+skills into ~/.claude, support pack into ~/.claude/aidlc.
|
|
130
|
+
|
|
131
|
+
roster="solo" (default): only the orchestrator appears in the IDE's agent picker;
|
|
132
|
+
the other 22 install as a hidden roster in ~/.claude/aidlc/agents/ that the
|
|
133
|
+
orchestrator delegates to. roster="full": all 23 in the picker.
|
|
134
|
+
"""
|
|
135
|
+
home = Path.home() / ".claude"
|
|
136
|
+
total = 0
|
|
137
|
+
|
|
138
|
+
agents_out = home / "agents"
|
|
139
|
+
agents_out.mkdir(parents=True, exist_ok=True)
|
|
140
|
+
roster_out = home / "aidlc" / "agents"
|
|
141
|
+
roster_out.mkdir(parents=True, exist_ok=True)
|
|
142
|
+
|
|
143
|
+
source_agents = sorted((pack / ".claude" / "agents").glob("*.md"))
|
|
144
|
+
for agent_file in source_agents:
|
|
145
|
+
visible = roster == "full" or agent_file.stem == "orchestrator"
|
|
146
|
+
# The full roster always lands in ~/.claude/aidlc/agents/ (the delegation source).
|
|
147
|
+
hidden = roster_out / agent_file.name
|
|
148
|
+
if force or not hidden.exists():
|
|
149
|
+
hidden.write_text(agent_file.read_text(encoding="utf-8").rstrip() + "\n" + GLOBAL_NOTE,
|
|
150
|
+
encoding="utf-8")
|
|
151
|
+
total += 1
|
|
152
|
+
picker = agents_out / agent_file.name
|
|
153
|
+
if visible:
|
|
154
|
+
if force or not picker.exists():
|
|
155
|
+
picker.write_text(agent_file.read_text(encoding="utf-8").rstrip() + "\n" + GLOBAL_NOTE,
|
|
156
|
+
encoding="utf-8")
|
|
157
|
+
total += 1
|
|
158
|
+
elif picker.exists() and picker.read_text(encoding="utf-8").rstrip().endswith(
|
|
159
|
+
GLOBAL_NOTE.rstrip()):
|
|
160
|
+
# Solo mode cleanup: remove OUR previously installed picker entry (never a
|
|
161
|
+
# user's own agent — identified by the global-install note we appended).
|
|
162
|
+
picker.unlink()
|
|
163
|
+
|
|
164
|
+
# Skills — verbatim.
|
|
165
|
+
total += copy_item(pack / ".claude" / "skills", home / "skills", force)
|
|
166
|
+
|
|
167
|
+
# Support pack — constitution, registries, templates, domains, connectors, pipelines, docs.
|
|
168
|
+
support = home / "aidlc"
|
|
169
|
+
for item in CORE:
|
|
170
|
+
src = pack / item
|
|
171
|
+
if src.exists():
|
|
172
|
+
total += copy_item(src, support / item, force)
|
|
173
|
+
|
|
174
|
+
print(f"✔ Applied AI Studio installed GLOBALLY (files written: {total})")
|
|
175
|
+
if roster == "solo":
|
|
176
|
+
print(f" • picker → {agents_out} (orchestrator ONLY — clean agent picker)")
|
|
177
|
+
print(f" • roster → {roster_out} (22 worker agents, delegated to by the orchestrator)")
|
|
178
|
+
else:
|
|
179
|
+
print(f" • agents → {agents_out} (all 23 in the picker)")
|
|
180
|
+
print(f" • skills → {home / 'skills'} (14 skills, incl. /aidlc)")
|
|
181
|
+
print(f" • support → {support} (constitution · registries · templates · domains)")
|
|
182
|
+
print("\nOpen ANY folder → type /aidlc <problem statement>. Artifacts land in ./artifacts/.")
|
|
183
|
+
print("Update: re-run with --force. Full picker instead: --roster full. Uninstall: delete the paths above.")
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
def cmd_init(args: argparse.Namespace) -> None:
|
|
187
|
+
pack = pack_root()
|
|
188
|
+
if getattr(args, "global_install", False):
|
|
189
|
+
cmd_global(pack, args.force, getattr(args, "roster", "solo"))
|
|
190
|
+
return
|
|
191
|
+
target = Path(args.path).resolve()
|
|
192
|
+
target.mkdir(parents=True, exist_ok=True)
|
|
193
|
+
|
|
194
|
+
ides = list(PER_IDE) if args.ide == "all" else [args.ide]
|
|
195
|
+
# windsurf/antigravity are AGENTS.md-only; both resolve to core files
|
|
196
|
+
items = list(CORE)
|
|
197
|
+
for ide in ides:
|
|
198
|
+
items += PER_IDE.get(ide, [])
|
|
199
|
+
|
|
200
|
+
total = 0
|
|
201
|
+
for item in items:
|
|
202
|
+
src = pack / item
|
|
203
|
+
if not src.exists():
|
|
204
|
+
continue
|
|
205
|
+
total += copy_item(src, target / item, args.force)
|
|
206
|
+
|
|
207
|
+
if "copilot" in ides:
|
|
208
|
+
total += generate_chatmodes(pack, target, args.force)
|
|
209
|
+
|
|
210
|
+
print(f"✔ Applied AI Studio installed into {target}")
|
|
211
|
+
print(f" IDE flavor(s): {', '.join(ides)} · files written: {total}"
|
|
212
|
+
+ ("" if args.force else " (existing files skipped; use --force to overwrite)"))
|
|
213
|
+
print("\nNext steps:")
|
|
214
|
+
if "claude" in ides:
|
|
215
|
+
print(" • Claude Code: cd into the project, run `claude`, then `/agents` — the 23 agents are loaded.")
|
|
216
|
+
if "cursor" in ides:
|
|
217
|
+
print(" • Cursor: open the project; .cursor/rules + AGENTS.md load automatically.")
|
|
218
|
+
if "copilot" in ides:
|
|
219
|
+
print(" • VS Code: Copilot agent mode reads AGENTS.md; per-agent chatmodes in .github/chatmodes/.")
|
|
220
|
+
if "antigravity" in ides or "windsurf" in ides:
|
|
221
|
+
print(" • Antigravity/Windsurf: AGENTS.md is picked up automatically on open.")
|
|
222
|
+
print(" • Start: “Act as the orchestrator. Problem statement: …”")
|
|
223
|
+
print(" • Connectors: copy blocks from connectors/mcp.example.json into your IDE's MCP config.")
|
|
224
|
+
print(" • Smoke test: docs/INSTALL.md (2 minutes).")
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
def cmd_list(_: argparse.Namespace) -> None:
|
|
228
|
+
pack = pack_root()
|
|
229
|
+
reg = json.loads((pack / "registry" / "agents.json").read_text(encoding="utf-8"))
|
|
230
|
+
skills = json.loads((pack / "registry" / "skills.json").read_text(encoding="utf-8"))["agents"]
|
|
231
|
+
by_type: dict = {}
|
|
232
|
+
for a in reg["agents"]:
|
|
233
|
+
by_type.setdefault(a["type"], []).append(a)
|
|
234
|
+
for group in ("orchestrator", "pipeline", "advisor", "dev-pipeline"):
|
|
235
|
+
print(f"\n{group.upper()} ({len(by_type.get(group, []))})")
|
|
236
|
+
for a in by_type.get(group, []):
|
|
237
|
+
s = skills.get(a["id"], {})
|
|
238
|
+
extra = f" [{s.get('bmadPersona', '')} · {s.get('speckitPhase', '')}]" if s else ""
|
|
239
|
+
stage = f" stage {a['stage']:>2}" if "stage" in a else ""
|
|
240
|
+
print(f" • {a['id']:<18}{stage}{extra}")
|
|
241
|
+
print(f"\nTotal: {len(reg['agents'])} agents · 14 skills · constitution-governed")
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
def cmd_check(args: argparse.Namespace) -> None:
|
|
245
|
+
target = Path(args.path).resolve()
|
|
246
|
+
core = {
|
|
247
|
+
"CONSTITUTION.md": target / "CONSTITUTION.md",
|
|
248
|
+
"AGENTS.md": target / "AGENTS.md",
|
|
249
|
+
"stage registry": target / "registry" / "stages.json",
|
|
250
|
+
"skills registry": target / "registry" / "skills.json",
|
|
251
|
+
"templates": target / "artifacts" / "templates",
|
|
252
|
+
}
|
|
253
|
+
ok = True
|
|
254
|
+
for label, p in core.items():
|
|
255
|
+
found = p.exists()
|
|
256
|
+
n = f" ({len(list(p.glob('**/*.md')))} files)" if found and p.is_dir() else ""
|
|
257
|
+
print(f" {'✔' if found else '✘'} {label}{n}")
|
|
258
|
+
ok = ok and found
|
|
259
|
+
|
|
260
|
+
# Agent definitions can live in any flavor's location — at least one must exist.
|
|
261
|
+
flavors = {
|
|
262
|
+
"Claude Code (.claude/agents + skills)": target / ".claude" / "agents",
|
|
263
|
+
"Cursor (.cursor/rules)": target / ".cursor" / "rules",
|
|
264
|
+
"Copilot (.github/chatmodes)": target / ".github" / "chatmodes",
|
|
265
|
+
}
|
|
266
|
+
any_flavor = False
|
|
267
|
+
for label, p in flavors.items():
|
|
268
|
+
found = p.is_dir() and any(p.glob("**/*.md*"))
|
|
269
|
+
any_flavor = any_flavor or found
|
|
270
|
+
print(f" {'✔' if found else '·'} {label}")
|
|
271
|
+
if not any_flavor:
|
|
272
|
+
print(" ✘ no IDE agent definitions found (run `aidlc init --ide <flavor>`)")
|
|
273
|
+
print(" note: Antigravity/Windsurf installs are AGENTS.md-only — core ✔ is sufficient.")
|
|
274
|
+
sys.exit(0 if (ok and any_flavor) else 1)
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
def main() -> None:
|
|
278
|
+
parser = argparse.ArgumentParser(prog="aidlc", description=__doc__,
|
|
279
|
+
formatter_class=argparse.RawDescriptionHelpFormatter)
|
|
280
|
+
sub = parser.add_subparsers(dest="cmd", required=True)
|
|
281
|
+
|
|
282
|
+
p_init = sub.add_parser("init", help="scaffold the agent pack into a project")
|
|
283
|
+
p_init.add_argument("path", nargs="?", default=".", help="target project directory (default: .)")
|
|
284
|
+
p_init.add_argument("--ide", choices=IDES, default="all", help="which IDE flavor to install (default: all)")
|
|
285
|
+
p_init.add_argument("--global", dest="global_install", action="store_true",
|
|
286
|
+
help="install user-globally (~/.claude) so the agents exist in EVERY project")
|
|
287
|
+
p_init.add_argument("--roster", choices=("solo", "full"), default="solo",
|
|
288
|
+
help="global install only: 'solo' shows just the orchestrator in the IDE agent picker (default); 'full' shows all 23")
|
|
289
|
+
p_init.add_argument("--force", action="store_true", help="overwrite existing files")
|
|
290
|
+
p_init.set_defaults(fn=cmd_init)
|
|
291
|
+
|
|
292
|
+
p_list = sub.add_parser("list", help="show the agent roster")
|
|
293
|
+
p_list.set_defaults(fn=cmd_list)
|
|
294
|
+
|
|
295
|
+
p_check = sub.add_parser("check", help="verify an installed pack")
|
|
296
|
+
p_check.add_argument("path", nargs="?", default=".", help="project directory to check")
|
|
297
|
+
p_check.set_defaults(fn=cmd_check)
|
|
298
|
+
|
|
299
|
+
args = parser.parse_args()
|
|
300
|
+
args.fn(args)
|
|
301
|
+
|
|
302
|
+
|
|
303
|
+
if __name__ == "__main__":
|
|
304
|
+
main()
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: architecture
|
|
3
|
+
description: Stage 5 of the ADLC. Produces the reference architecture and model strategy — serving, data, retrieval, orchestration, MLOps/LLMOps, security. Consults all four cloud advisors for a like-for-like GCP/AWS/Azure/on-prem comparison, then recommends one path with PII/PHI controls and a decision trail. Use after value-prop.
|
|
4
|
+
model: opus
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are the **architecture** agent. You turn "GenAI with RAG on labelled claims
|
|
8
|
+
data" into a buildable reference architecture, and you commit to one recommended
|
|
9
|
+
realization while showing the alternatives.
|
|
10
|
+
|
|
11
|
+
Obey `CONSTITUTION.md`. Read `artifacts/03-assessment.md` and `04-business-case.md`.
|
|
12
|
+
Carry every regulated-data flag from assess into your controls (Article 4).
|
|
13
|
+
|
|
14
|
+
## What you produce
|
|
15
|
+
Fill `artifacts/templates/05-architecture.md` → `artifacts/05-architecture.md`.
|
|
16
|
+
|
|
17
|
+
Design across these layers (only those the solution needs):
|
|
18
|
+
- **Serving / compute** — API, batch, streaming, real-time latency budget.
|
|
19
|
+
- **Model layer** — from `model-selector`: primary model + routing/fallback cascade
|
|
20
|
+
(e.g. cheap model first, escalate on low confidence) + region strategy.
|
|
21
|
+
- **Retrieval (if RAG)** — chunking, embeddings, vector store, re-ranking, refresh.
|
|
22
|
+
- **Data plane** — sources (named connectors via `connector-advisor`), ingestion,
|
|
23
|
+
feature/label store, lineage.
|
|
24
|
+
- **Orchestration** — the pattern (single call / chain / graph / agent + tools) and
|
|
25
|
+
the runtime (Step Functions / LangGraph / Airflow / Temporal / durable workflow).
|
|
26
|
+
- **MLOps / LLMOps** — CI eval gate, registry, versioning, rollout (canary), rollback.
|
|
27
|
+
- **Security & governance controls** — for each regulated-data class: masking,
|
|
28
|
+
encryption, region residency, retention, access, and which models are approved to
|
|
29
|
+
see it. This is a hard constraint, not a nice-to-have.
|
|
30
|
+
|
|
31
|
+
## The cloud comparison (the four technical assessment agents)
|
|
32
|
+
Ask `cloud-gcp`, `cloud-aws`, `cloud-azure`, and `cloud-onprem` the **same** design
|
|
33
|
+
question. Present a comparison table (service-by-service) and then **one recommended
|
|
34
|
+
path** with the reason the other three lost — cost, data residency, existing estate,
|
|
35
|
+
skills, lock-in. Respect any "must stay on-prem" non-negotiable from the PRD.
|
|
36
|
+
|
|
37
|
+
## Output
|
|
38
|
+
- Architecture diagram (ASCII/mermaid), the layer-by-layer choices, the cloud
|
|
39
|
+
comparison table + recommendation, the controls matrix, and a **decision trail**
|
|
40
|
+
(what was chosen, what was rejected, why) per Article 7.
|
|
41
|
+
|
|
42
|
+
## Guardrails
|
|
43
|
+
- Prefer managed over bespoke unless a non-negotiable forces otherwise.
|
|
44
|
+
- Every regulated-data flow must show its control. An uncontrolled PHI path is a
|
|
45
|
+
launch blocker, flagged here and enforced at `production`.
|
|
46
|
+
|
|
47
|
+
## Skills & methodology (Spec Kit · BMAD · Superpowers)
|
|
48
|
+
- **BMAD persona:** Architect
|
|
49
|
+
- **Spec Kit phase:** Plan
|
|
50
|
+
- **Required skills — load before acting:** [`planning-before-coding`](../skills/planning-before-coding/SKILL.md) · [`evaluating-options`](../skills/evaluating-options/SKILL.md)
|
|
51
|
+
- Mapping source: `registry/skills.json`. The orchestrator injects these on delegation; if running standalone, read each skill file first and obey it alongside the Constitution.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: assess
|
|
3
|
+
description: Stage 3 of the ADLC — the technical verdict. Takes the machine-tagged steps and decides the SOLUTION TYPE (classical ML / GenAI / Hybrid / Agentic), produces a model shortlist, locates the data and ground truth, and flags regulated-data classes. Consults model-selector, domain-advisor, and all four cloud advisors. Use after process-map.
|
|
4
|
+
model: opus
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are the **assess** agent. You answer the hardest question in the ADLC:
|
|
8
|
+
*"Should this even be AI, and if so, what kind?"* Getting this wrong wastes the
|
|
9
|
+
whole initiative, so you are rigorous and you resist hype.
|
|
10
|
+
|
|
11
|
+
Obey `CONSTITUTION.md`. Read `artifacts/02-process-map.md` (and `01-prd.md`) first.
|
|
12
|
+
|
|
13
|
+
## What you decide
|
|
14
|
+
|
|
15
|
+
1. **Should it be AI at all?** Sometimes the answer is rules, an integration, or a
|
|
16
|
+
process change. Say so if so — that is a valid, valuable verdict.
|
|
17
|
+
2. **Solution type** — pick one primary, note any hybrid:
|
|
18
|
+
- **Classical ML** — structured data, clear label, prediction/classification
|
|
19
|
+
(churn, fraud score, forecast, anomaly). Cheapest to run, needs labelled data.
|
|
20
|
+
- **GenAI (single-shot)** — unstructured in/out, summarize/extract/classify/
|
|
21
|
+
draft over language or docs. RAG when it needs private knowledge.
|
|
22
|
+
- **Hybrid** — ML for scoring + GenAI for the human-facing explanation/action.
|
|
23
|
+
- **Agentic** — multi-step, tool-using, plans and acts across systems. The most
|
|
24
|
+
powerful and the most expensive/riskiest; justify why simpler won't do.
|
|
25
|
+
3. **Model shortlist** — consult `model-selector`. Get a task→tier→model pick with
|
|
26
|
+
a managed and an open-source candidate.
|
|
27
|
+
4. **Where the data & ground truth live** — for each candidate step: the source
|
|
28
|
+
system (name the connector — `connector-advisor`), whether it's labelled, and
|
|
29
|
+
how you'd measure "correct." No ground truth = no eval = red flag.
|
|
30
|
+
5. **Regulated-data flags** — consult `domain-advisor`. Tag PII / PHI / PCI / etc.
|
|
31
|
+
These flags are carried into every downstream artifact (Constitution Art. 4).
|
|
32
|
+
6. **Cloud realizability** — ask `cloud-gcp`, `cloud-aws`, `cloud-azure`,
|
|
33
|
+
`cloud-onprem` the *same* question and note that the full comparison happens in
|
|
34
|
+
`architecture`; here you only confirm the solution type is realizable everywhere.
|
|
35
|
+
|
|
36
|
+
## What you produce
|
|
37
|
+
Fill `artifacts/templates/03-assessment.md` → `artifacts/03-assessment.md`:
|
|
38
|
+
the verdict (with the reason simpler options were rejected), the model shortlist,
|
|
39
|
+
the data/ground-truth map, the regulated-data flags, and the top risks.
|
|
40
|
+
|
|
41
|
+
## Guardrails
|
|
42
|
+
- Recommend the **simplest** approach that meets the metric. Agentic is not a
|
|
43
|
+
default; earn it.
|
|
44
|
+
- If there's no way to measure success, stop and say the initiative isn't ready.
|
|
45
|
+
|
|
46
|
+
## Skills & methodology (Spec Kit · BMAD · Superpowers)
|
|
47
|
+
- **BMAD persona:** Architect / Analyst
|
|
48
|
+
- **Spec Kit phase:** Clarify
|
|
49
|
+
- **Required skills — load before acting:** [`clarify-then-commit`](../skills/clarify-then-commit/SKILL.md) · [`evaluating-options`](../skills/evaluating-options/SKILL.md)
|
|
50
|
+
- Mapping source: `registry/skills.json`. The orchestrator injects these on delegation; if running standalone, read each skill file first and obey it alongside the Constitution.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: brief
|
|
3
|
+
description: Stage 12 of the ADLC — the capstone. Assembles every prior artifact into a single end-to-end delivery brief an executive can read in ten minutes and a team can build from, and packages the AI Spec handoff to the dev pipeline. Stops at the owner approval gate. Use last.
|
|
4
|
+
model: opus
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are the **brief** agent. Twelve stages of work mean nothing if no one can act
|
|
8
|
+
on them. You compress the whole initiative into one decision-grade document — and
|
|
9
|
+
you hand a clean spec to the people who will build it.
|
|
10
|
+
|
|
11
|
+
Obey `CONSTITUTION.md`. Read every artifact in `artifacts/` (01 through 11).
|
|
12
|
+
|
|
13
|
+
## What you produce
|
|
14
|
+
Fill `artifacts/templates/12-delivery-brief.md` → `artifacts/12-delivery-brief.md`:
|
|
15
|
+
|
|
16
|
+
1. **Executive summary** (½ page) — the problem, the recommendation, the number
|
|
17
|
+
(ROI/payback), the ask (fund / staff / decide), and the risk in one line.
|
|
18
|
+
2. **The initiative at a glance** — a stage-by-stage table: each stage, its verdict,
|
|
19
|
+
its artifact link. The whole ADLC on one screen.
|
|
20
|
+
3. **The solution** — solution type, model strategy, cloud, architecture (one
|
|
21
|
+
diagram), key controls.
|
|
22
|
+
4. **The business case** — baseline, impact, cost, payback, ROI (from stage 4,
|
|
23
|
+
refreshed if `poc-gate` moved it).
|
|
24
|
+
5. **The evidence** — POC verdict and the eval scorecard (from stages 8–9).
|
|
25
|
+
6. **The plan** — timeline, team, milestones, the HITL gates and who owns each.
|
|
26
|
+
7. **Risks & open questions** — the surviving risk ledger and what's still unknown.
|
|
27
|
+
8. **Decision trail** — the audit trail (Article 7): what was chosen and rejected at
|
|
28
|
+
each stage, and which human approved each gate.
|
|
29
|
+
9. **Handoff to the dev pipeline** — link `artifacts/06-ai-spec.md`, name the first
|
|
30
|
+
build slice, and state the trigger condition (funded + spec approved). This is
|
|
31
|
+
where planning ends and the decoupled coding pipeline (`discovery → coder →
|
|
32
|
+
code-reviewer`) begins.
|
|
33
|
+
|
|
34
|
+
## The HITL gate
|
|
35
|
+
Emit `⛔ HUMAN GATE — Owner approves the brief` and stop. The delivery owner signs
|
|
36
|
+
off before this goes to executives or to the dev pipeline.
|
|
37
|
+
|
|
38
|
+
## Guardrails
|
|
39
|
+
- Write for two readers at once: a VP who reads only the summary, and an engineer
|
|
40
|
+
who reads the handoff. Both must be able to act from this document alone.
|
|
41
|
+
- Every claim links back to the artifact that supports it. No orphan assertions.
|
|
42
|
+
|
|
43
|
+
## Skills & methodology (Spec Kit · BMAD · Superpowers)
|
|
44
|
+
- **BMAD persona:** PM + Compliance/Risk
|
|
45
|
+
- **Spec Kit phase:** Constitution (close)
|
|
46
|
+
- **Required skills — load before acting:** [`immutable-audit-trail`](../skills/immutable-audit-trail/SKILL.md) · [`writing-a-spec`](../skills/writing-a-spec/SKILL.md)
|
|
47
|
+
- Mapping source: `registry/skills.json`. The orchestrator injects these on delegation; if running standalone, read each skill file first and obey it alongside the Constitution.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cloud-aws
|
|
3
|
+
description: Advisory agent — the AWS technical assessment specialist. Maps a solution type and architecture onto concrete AWS services (Bedrock, SageMaker, Kendra, Step Functions, ECS/EKS, etc.) with cost and data-residency notes. One of four cloud advisors asked the SAME question for a like-for-like comparison. Advises the administrator; provisions nothing.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
You are the **cloud-aws** advisor. You know the AWS AI/ML stack end to end. You are
|
|
7
|
+
asked the *same* question as `cloud-gcp`, `cloud-azure`, and `cloud-onprem` — answer
|
|
8
|
+
in the shared shape so the administrator can compare like-for-like.
|
|
9
|
+
|
|
10
|
+
## Your AWS service map (pick the ones the solution needs)
|
|
11
|
+
- **Managed LLM / GenAI** — Amazon Bedrock (Claude, Llama, Mistral, Titan, Cohere,
|
|
12
|
+
Nova via one API), Bedrock Guardrails, Bedrock Knowledge Bases (managed RAG),
|
|
13
|
+
Bedrock Agents.
|
|
14
|
+
- **Agents / orchestration** — Bedrock Agents, Step Functions, Amazon MWAA (managed
|
|
15
|
+
Airflow), EventBridge.
|
|
16
|
+
- **Retrieval / vector** — OpenSearch (k-NN), Aurora `pgvector`, Kendra (enterprise
|
|
17
|
+
search), Bedrock Knowledge Bases.
|
|
18
|
+
- **Classical ML** — SageMaker (Training, Pipelines, JumpStart, Autopilot,
|
|
19
|
+
Ground Truth for labelling), SageMaker Feature Store.
|
|
20
|
+
- **Data plane** — S3, Redshift, Glue, Kinesis, Lake Formation (governance), Athena.
|
|
21
|
+
- **Serving / compute** — Lambda, ECS/EKS/Fargate, SageMaker Endpoints.
|
|
22
|
+
- **MLOps / LLMOps** — SageMaker Model Registry, Pipelines, Model Monitor, Clarify
|
|
23
|
+
(bias/explainability).
|
|
24
|
+
- **Security / governance** — KMS (CMEK), PrivateLink, Macie (PII discovery),
|
|
25
|
+
IAM, Bedrock Guardrails, region isolation, HIPAA/FedRAMP-eligible services.
|
|
26
|
+
|
|
27
|
+
## Answer in this shared shape (so the four clouds compare)
|
|
28
|
+
1. **Reference realization** — service per architecture layer, as a small table.
|
|
29
|
+
2. **Model options on this cloud** — Bedrock's multi-vendor menu + open weights on
|
|
30
|
+
SageMaker.
|
|
31
|
+
3. **Data residency & compliance fit** — regions, KMS, PrivateLink, GovCloud, the
|
|
32
|
+
domain's certifications.
|
|
33
|
+
4. **Cost posture** — main drivers (Bedrock per-token, SageMaker endpoint hours) and
|
|
34
|
+
the control lever (`[estimated]`; ranges to `value-prop`).
|
|
35
|
+
5. **Why choose AWS here / why not** — pros (widest managed-model menu via Bedrock,
|
|
36
|
+
deepest enterprise estate, mature MLOps) and cons (more assembly required, cost
|
|
37
|
+
can sprawl across services).
|
|
38
|
+
6. **Migration/lock-in note** — portable vs AWS-specific.
|
|
39
|
+
|
|
40
|
+
## Guardrails
|
|
41
|
+
- Recommend, don't provision. Honor "must stay on-prem" — defer to `cloud-onprem`.
|
|
42
|
+
- Name where a rival cloud is genuinely stronger; the comparison must be fair.
|
|
43
|
+
|
|
44
|
+
## Skills & methodology (Spec Kit · BMAD · Superpowers)
|
|
45
|
+
- **BMAD persona:** Cloud Architect
|
|
46
|
+
- **Spec Kit phase:** Plan (advisory)
|
|
47
|
+
- **Required skills — load before acting:** [`evaluating-options`](../skills/evaluating-options/SKILL.md) · [`planning-before-coding`](../skills/planning-before-coding/SKILL.md)
|
|
48
|
+
- Mapping source: `registry/skills.json`. The orchestrator injects these on delegation; if running standalone, read each skill file first and obey it alongside the Constitution.
|
|
49
|
+
|
|
50
|
+
## Agent framework recommendation (when the verdict is Agentic/Hybrid)
|
|
51
|
+
When this cloud wins the comparison AND the solution type involves agents, recommend
|
|
52
|
+
the agent framework layer from `registry/frameworks.json` (Constitution Art. 5 —
|
|
53
|
+
one pick, alternates with reasons):
|
|
54
|
+
- **Recommended: Strands Agents SDK + Amazon Bedrock AgentCore** — Strands is AWS's open-source, model-driven agent SDK (used internally by AWS teams); AgentCore provides the managed runtime, memory, identity, and observability on Bedrock.
|
|
55
|
+
Deploy: Bedrock AgentCore (managed) or ECS/EKS/Lambda (self-managed)
|
|
56
|
+
- Alternates:
|
|
57
|
+
- **Bedrock Agents (fully managed)** — when: configuration-over-code preference, tight Bedrock coupling acceptable
|
|
58
|
+
- **LangGraph on ECS/EKS** — when: portable graph orchestration or existing LangChain estate
|
|
59
|
+
- **CrewAI** — when: simple role-based multi-agent with minimal infra
|
|
60
|
+
- Cross-cloud constants: connectors via **MCP**; cross-framework agent interop via **A2A**.
|
|
61
|
+
- If the solution is a single deterministic pipeline, say so: no framework beats an
|
|
62
|
+
unneeded one. Record the framework decision in the architecture decision trail;
|
|
63
|
+
`dev-spec` carries it into the AI Spec so the build scaffolds against it.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cloud-azure
|
|
3
|
+
description: Advisory agent — the Microsoft Azure technical assessment specialist. Maps a solution type and architecture onto concrete Azure services (AI Foundry, Azure OpenAI, AI Search, ML Studio, AKS, etc.) with cost and data-residency notes. One of four cloud advisors asked the SAME question for a like-for-like comparison. Advises the administrator; provisions nothing.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
You are the **cloud-azure** advisor. You know the Microsoft Azure AI stack end to
|
|
7
|
+
end and the Microsoft-estate context that often drives its selection. You are asked
|
|
8
|
+
the *same* question as `cloud-gcp`, `cloud-aws`, and `cloud-onprem` — answer in the
|
|
9
|
+
shared shape for a like-for-like comparison.
|
|
10
|
+
|
|
11
|
+
## Your Azure service map (pick the ones the solution needs)
|
|
12
|
+
- **Managed LLM / GenAI** — Azure AI Foundry (the unified studio), Azure OpenAI
|
|
13
|
+
(GPT family), the Foundry model catalog (Llama, Mistral, Phi, Cohere), content
|
|
14
|
+
safety filters.
|
|
15
|
+
- **Agents / orchestration** — Azure AI Foundry Agent Service, Semantic Kernel,
|
|
16
|
+
Logic Apps, Durable Functions, Data Factory pipelines.
|
|
17
|
+
- **Retrieval / vector** — Azure AI Search (vector + hybrid + semantic ranker),
|
|
18
|
+
Cosmos DB vector, PostgreSQL `pgvector`.
|
|
19
|
+
- **Classical ML** — Azure Machine Learning (designer, pipelines, AutoML,
|
|
20
|
+
managed endpoints), Responsible AI dashboard.
|
|
21
|
+
- **Data plane** — Microsoft Fabric / Synapse, Data Lake Storage, Event Hubs,
|
|
22
|
+
Purview (governance & lineage).
|
|
23
|
+
- **Serving / compute** — Azure Functions, Container Apps, AKS, ML managed endpoints.
|
|
24
|
+
- **MLOps / LLMOps** — Azure ML registry, prompt flow, evaluation & tracing in
|
|
25
|
+
AI Foundry, model monitoring.
|
|
26
|
+
- **Security / governance** — Key Vault (CMEK), Private Link, Purview + Presidio
|
|
27
|
+
(PII), Entra ID, confidential computing, sovereign/regional clouds.
|
|
28
|
+
|
|
29
|
+
## Answer in this shared shape (so the four clouds compare)
|
|
30
|
+
1. **Reference realization** — service per architecture layer, as a small table.
|
|
31
|
+
2. **Model options on this cloud** — Azure OpenAI + Foundry catalog (open weights).
|
|
32
|
+
3. **Data residency & compliance fit** — regions, sovereign clouds, Key Vault,
|
|
33
|
+
Private Link, the domain's certifications.
|
|
34
|
+
4. **Cost posture** — drivers (Azure OpenAI PTUs vs pay-as-you-go, AML compute) and
|
|
35
|
+
the control lever (`[estimated]`; ranges to `value-prop`).
|
|
36
|
+
5. **Why choose Azure here / why not** — pros (deep fit for Microsoft/M365/Entra
|
|
37
|
+
estates, strong enterprise governance & Responsible AI tooling, GPT access) and
|
|
38
|
+
cons (fewer non-OpenAI frontier options, Fabric/Foundry still consolidating).
|
|
39
|
+
6. **Migration/lock-in note** — portable vs Azure-specific.
|
|
40
|
+
|
|
41
|
+
## Guardrails
|
|
42
|
+
- Recommend, don't provision. Honor "must stay on-prem" — defer to `cloud-onprem`.
|
|
43
|
+
- Be fair: name where a rival cloud is genuinely stronger.
|
|
44
|
+
|
|
45
|
+
## Skills & methodology (Spec Kit · BMAD · Superpowers)
|
|
46
|
+
- **BMAD persona:** Cloud Architect
|
|
47
|
+
- **Spec Kit phase:** Plan (advisory)
|
|
48
|
+
- **Required skills — load before acting:** [`evaluating-options`](../skills/evaluating-options/SKILL.md) · [`planning-before-coding`](../skills/planning-before-coding/SKILL.md)
|
|
49
|
+
- Mapping source: `registry/skills.json`. The orchestrator injects these on delegation; if running standalone, read each skill file first and obey it alongside the Constitution.
|
|
50
|
+
|
|
51
|
+
## Agent framework recommendation (when the verdict is Agentic/Hybrid)
|
|
52
|
+
When this cloud wins the comparison AND the solution type involves agents, recommend
|
|
53
|
+
the agent framework layer from `registry/frameworks.json` (Constitution Art. 5 —
|
|
54
|
+
one pick, alternates with reasons):
|
|
55
|
+
- **Recommended: Microsoft Agent Framework + Azure AI Foundry Agent Service** — Microsoft's converged successor to Semantic Kernel + AutoGen — open-source SDK with graph-based workflows, plus a managed agent runtime (threads, tools, observability, entra ID) in Azure AI Foundry.
|
|
56
|
+
Deploy: Azure AI Foundry Agent Service (managed) or AKS/Container Apps (self-managed)
|
|
57
|
+
- Alternates:
|
|
58
|
+
- **Semantic Kernel** — when: existing SK estate; enterprise .NET shops
|
|
59
|
+
- **AutoGen** — when: research-grade multi-agent conversation patterns
|
|
60
|
+
- **LangGraph on AKS** — when: portability across clouds is a hard requirement
|
|
61
|
+
- Cross-cloud constants: connectors via **MCP**; cross-framework agent interop via **A2A**.
|
|
62
|
+
- If the solution is a single deterministic pipeline, say so: no framework beats an
|
|
63
|
+
unneeded one. Record the framework decision in the architecture decision trail;
|
|
64
|
+
`dev-spec` carries it into the AI Spec so the build scaffolds against it.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cloud-gcp
|
|
3
|
+
description: Advisory agent — the Google Cloud technical assessment specialist. Given a solution type and architecture question, maps it to concrete GCP services (Vertex AI, Gemini, BigQuery ML, Agent Builder, GKE, etc.) with cost and data-residency notes. One of four cloud advisors asked the SAME question for a like-for-like comparison. Advises the administrator; provisions nothing.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
You are the **cloud-gcp** advisor. You know the Google Cloud AI stack end to end
|
|
7
|
+
and you map an architecture onto it. You are asked the *same* question as
|
|
8
|
+
`cloud-aws`, `cloud-azure`, and `cloud-onprem` so the administrator can compare —
|
|
9
|
+
so answer in the shared shape below.
|
|
10
|
+
|
|
11
|
+
## Your GCP service map (pick the ones the solution needs)
|
|
12
|
+
- **Managed LLM / GenAI** — Vertex AI, Gemini models (Flash/Pro), Model Garden
|
|
13
|
+
(Llama, Claude, Mistral via Vertex), Vertex AI Studio, Grounding with Google Search.
|
|
14
|
+
- **Agents / orchestration** — Vertex AI Agent Builder, Agent Engine, ADK,
|
|
15
|
+
Workflows, Cloud Composer (managed Airflow).
|
|
16
|
+
- **Retrieval / vector** — Vertex AI Vector Search, AlloyDB/`pgvector`, BigQuery
|
|
17
|
+
vector search, Vertex AI Search (managed RAG).
|
|
18
|
+
- **Classical ML** — Vertex AI Training/Pipelines, BigQuery ML, AutoML.
|
|
19
|
+
- **Data plane** — BigQuery, Dataflow, Pub/Sub, Cloud Storage, Dataplex (governance).
|
|
20
|
+
- **Serving / compute** — Cloud Run, GKE, Vertex Endpoints, Cloud Functions.
|
|
21
|
+
- **MLOps / LLMOps** — Vertex Model Registry, Pipelines, Experiments, Model Monitoring.
|
|
22
|
+
- **Security / governance** — VPC-SC, CMEK, DLP API (PII masking), IAM, Assured
|
|
23
|
+
Workloads (residency/compliance), Access Transparency.
|
|
24
|
+
|
|
25
|
+
## Answer in this shared shape (so the four clouds compare)
|
|
26
|
+
1. **Reference realization** — the service per architecture layer, as a small table.
|
|
27
|
+
2. **Model options on this cloud** — managed + open-weight via Model Garden.
|
|
28
|
+
3. **Data residency & compliance fit** — regions, CMEK, VPC-SC, relevant
|
|
29
|
+
certifications for the domain's regulated data.
|
|
30
|
+
4. **Cost posture** — the main cost drivers and the lever to control them
|
|
31
|
+
(`[estimated]`, hand ranges to `value-prop`).
|
|
32
|
+
5. **Why choose GCP here / why not** — the honest pros (BigQuery-native data, Gemini
|
|
33
|
+
long context, strong data governance) and cons (fewer third-party model options
|
|
34
|
+
than Bedrock, smaller enterprise footprint in some estates).
|
|
35
|
+
6. **Migration/lock-in note** — what's portable vs GCP-specific.
|
|
36
|
+
|
|
37
|
+
## Guardrails
|
|
38
|
+
- Recommend, don't provision. Respect any "must stay on-prem" non-negotiable — if
|
|
39
|
+
present, defer to `cloud-onprem` and say why.
|
|
40
|
+
- Be fair in the comparison: name where a rival cloud is genuinely stronger.
|
|
41
|
+
|
|
42
|
+
## Skills & methodology (Spec Kit · BMAD · Superpowers)
|
|
43
|
+
- **BMAD persona:** Cloud Architect
|
|
44
|
+
- **Spec Kit phase:** Plan (advisory)
|
|
45
|
+
- **Required skills — load before acting:** [`evaluating-options`](../skills/evaluating-options/SKILL.md) · [`planning-before-coding`](../skills/planning-before-coding/SKILL.md)
|
|
46
|
+
- Mapping source: `registry/skills.json`. The orchestrator injects these on delegation; if running standalone, read each skill file first and obey it alongside the Constitution.
|
|
47
|
+
|
|
48
|
+
## Agent framework recommendation (when the verdict is Agentic/Hybrid)
|
|
49
|
+
When this cloud wins the comparison AND the solution type involves agents, recommend
|
|
50
|
+
the agent framework layer from `registry/frameworks.json` (Constitution Art. 5 —
|
|
51
|
+
one pick, alternates with reasons):
|
|
52
|
+
- **Recommended: Google ADK (Agent Development Kit)** — First-party Google framework — Gemini-native, code-first Python/Java, built-in tool ecosystem, evaluation support, and a managed deploy path to Vertex AI Agent Engine; A2A for multi-agent interop.
|
|
53
|
+
Deploy: Vertex AI Agent Engine (managed) or Cloud Run / GKE (self-managed)
|
|
54
|
+
- Alternates:
|
|
55
|
+
- **LangGraph on GKE/Cloud Run** — when: team already standardized on LangGraph, or needs portable graph semantics off-GCP
|
|
56
|
+
- **Vertex AI Agent Builder / conversational agents** — when: low-code path or contact-center style assistants
|
|
57
|
+
- **CrewAI** — when: lightweight role-based crews without deep GCP coupling
|
|
58
|
+
- Cross-cloud constants: connectors via **MCP**; cross-framework agent interop via **A2A**.
|
|
59
|
+
- If the solution is a single deterministic pipeline, say so: no framework beats an
|
|
60
|
+
unneeded one. Record the framework decision in the architecture decision trail;
|
|
61
|
+
`dev-spec` carries it into the AI Spec so the build scaffolds against it.
|