원클릭으로
setup
Set up complypack for this project — generate complypack.yaml, warm the artifact cache, and optionally configure MCP integration
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Set up complypack for this project — generate complypack.yaml, warm the artifact cache, and optionally configure MCP integration
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Use when user mentions Rego, Conftest, OPA, "generate policy", or "assessment logic" in the context of Gemara catalogs. Generates Rego policies from Gemara Control Catalogs for Kubernetes (Deployments, Pods, DaemonSets, StatefulSets, CronJobs, Jobs, Services, NetworkPolicies, Ingress, RBAC, ConfigMaps, Secrets), CI/CD pipelines (GitHub Actions, GitLab CI, Azure Pipelines), Conftest, or OPA. Accepts mode argument: "single" (default, one requirement at a time) or "batch" (all at once)
Use when user wants to build Gemara Policy artifacts for audit preparation or compliance program setup
Use when starting any compliance task — establishes skill ordering and MCP grounding requirements before any other complypack skill runs
Use before generating any Rego policy or assessment logic — generates human-reviewable test cases from assessment requirements before any policy is written
Use when user mentions Rego, Conftest, OPA, AMPEL, "generate policy", or "assessment logic" in the context of Gemara catalogs. Generates policies from Gemara Control Catalogs for Kubernetes (Deployments, Pods, DaemonSets, StatefulSets, CronJobs, Jobs, Services, NetworkPolicies, Ingress, RBAC, ConfigMaps, Secrets), CI/CD pipelines (GitHub Actions, GitLab CI, Azure Pipelines), Conftest, OPA, or AMPEL
| name | setup |
| description | Set up complypack for this project — generate complypack.yaml, warm the artifact cache, and optionally configure MCP integration |
Set up complypack for this project. The primary outputs are a validated
complypack.yaml and a warm artifact cache. MCP server configuration is
an optional final step.
All paths in this skill are relative to the project root — the
directory containing complypack.yaml (or where it will be created).
complypack.yaml (project root).mcp.json or opencode.json (project root)$XDG_CACHE_HOME/complypack or
$HOME/.cache/complypack (system default, do not override)Do NOT search outside the project root for any files. If a path cannot be resolved within the project root, report an error and stop.
Check if complypack.yaml already exists in the current directory.
If it exists: show its contents and ask the user:
complypack.yamlalready exists. What would you like to do?
- Reconfigure (regenerate from scratch)
- Skip to cache warmup (keep current config)
- Abort
If the user selects "Reconfigure", continue to Step 2. If the user selects "Skip to cache warmup", jump to Step 3. If the user selects "Abort", stop.
If it does not exist: continue to Step 2.
complypack.yamlCheck if the complypack binary is available:
command -v complypack &> /dev/null && HAVE_BINARY=true || HAVE_BINARY=false
complypack initRun complypack init in the project directory. The init command handles
all configuration interactively:
io.complytime.my-pack)0.1.0)opa)The init command validates the generated config against the JSON Schema
and writes complypack.yaml to the current directory.
For non-interactive environments, use flags:
complypack init \
--schema kubernetes-deployment \
--schema ci-github-actions \
--source oci://ghcr.io/org/catalog:v1 \
--evaluator-id opa \
--id io.complytime.my-pack \
--version 0.1.0
If the file already exists, complypack init prompts for confirmation
before overwriting (or use --force to skip the prompt).
Inform the user that the complypack CLI is required:
The
complypackbinary was not found on PATH. Install it first:go install github.com/complytime/complypack/cmd/complypack@latestThen run
/comply-setupagain.
Stop and wait for the user to install the binary.
After complypack.yaml exists, pre-warm the artifact cache by running:
complypack pull
This reads the configured Gemara sources and pulls each OCI source into
the persistent cache at $XDG_CACHE_HOME/complypack (or
$HOME/.cache/complypack). File sources (file://) are skipped since
they are already local.
Report the result:
podman login or docker login if the error mentions
authentication.Confirm the setup is ready:
complypack.yaml exists and passed validation (already ensured by
complypack init)Example output:
Setup complete:
- Config:
complypack.yaml- Sources: 2 OCI, 1 local
- Schemas:
kubernetes-deployment,ci-github-actions- Evaluator:
opa- Cache: warm
Always ask the user whether they want MCP integration. Do not skip this step or assume the answer.
Ask the user:
Would you like to configure an MCP server for your AI coding tool?
- Yes — local binary
- Yes — container (Docker/Podman)
- No — skip MCP configuration
If the user selects "No", inform them they can use the CLI directly
(complypack pack, complypack pull) and stop.
Determine which AI coding tool is running and adapt the output format.
Implicit context (preferred): The agent inherently knows which tool it is running inside — use it directly without environment checks.
skill tool or
a /comply-setup custom command, the tool is OpenCode./comply:setup), the tool is Claude Code.Directory scanning (fallback): If the agent cannot determine its runtime identity, scan for tool directories:
.claude-plugin/ → Claude Code.opencode/ → OpenCode.cursor-plugin/ → CursorIf multiple are found, prompt the user to select their active tool.
Error (last resort): If no tool is detected through implicit context or directory scanning, stop with an error:
Could not detect your AI coding tool. Checked:
- Implicit runtime context (not available)
.opencode/directory (not found).claude-plugin/directory (not found).cursor-plugin/directory (not found)Specify your tool manually and re-run
/comply-setup.
Do not guess the tool identity. Writing config to the wrong location is worse than stopping.
The complypack binary reads complypack.yaml from the current directory
by default. The MCP server command is:
complypack mcp serve
Or with an explicit config path:
complypack mcp serve --config /path/to/complypack.yaml
Write the tool-specific config file:
Claude Code / Cursor — .mcp.json:
{
"mcpServers": {
"complypack": {
"command": "complypack",
"args": ["mcp", "serve"]
}
}
}
OpenCode — opencode.json:
If opencode.json already exists, merge the mcp entry into it.
If not, create a new file.
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"complypack": {
"type": "local",
"command": ["complypack", "mcp", "serve"]
}
}
}
Key differences: OpenCode uses
opencode.jsonwith top-level keymcp(notmcpServers). Each server has"type": "local"andcommandis a single array (not split intocommand+args).
Detect which container runtime is available:
command -v docker &> /dev/null && HAVE_DOCKER=true || HAVE_DOCKER=false
command -v podman &> /dev/null && HAVE_PODMAN=true || HAVE_PODMAN=false
RUNTIME.Resolve container image version:
Look up the latest release. Do NOT use :latest tags.
gh api repos/complytime/complypack/releases --jq '.[0].tag_name'
If no release exists, ask the user for a tag or offer :main as an
option (see below).
Verify the container image tag exists:
<RUNTIME> manifest inspect ghcr.io/complytime/complypack:<VERSION> > /dev/null 2>&1
If the manifest check fails, ask the user:
No container image found for tag
<VERSION>. What would you like to do?
- Use
:main(tracks the main branch — may be unstable)- Enter a different tag
- Switch to local binary instead (Step 5b)
Do not fall back to :main automatically — the user must confirm.
Write configuration:
The container needs the complypack.yaml mounted in and the source/schema
values passed via --source and --schema flags (read from the generated
complypack.yaml).
IMPORTANT — Volume mounts for
file://sources: When any source usesfile://, the container command MUST include-v <host-path>:/workspace -w /workspaceto mount the host directory. Without this, the server cannot access the file. On SELinux systems (Fedora, RHEL), add:zto the volume mount. Check the generatedcomplypack.yamlforfile://sources before writing the config.
Claude Code / Cursor — .mcp.json:
{
"mcpServers": {
"complypack": {
"command": "<RUNTIME>",
"args": ["run", "--rm", "-i",
"ghcr.io/complytime/complypack:<VERSION>",
"mcp", "serve",
"--source", "<SOURCE>",
"--schema", "<SCHEMA>"]
}
}
}
OpenCode — opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"complypack": {
"type": "local",
"command": ["<RUNTIME>", "run", "--rm", "-i",
"ghcr.io/complytime/complypack:<VERSION>",
"mcp", "serve",
"--source", "<SOURCE>",
"--schema", "<SCHEMA>"]
}
}
}
Check that the MCP server starts and responds. Report loaded catalogs and schemas.
Claude Code: Inform user to use /comply:audit-pipeline or
/comply:build-assessment.
OpenCode: Inform user to use /comply-pipeline or /comply-pack
(custom commands) or to ask "run the comply pipeline" (skill-based
invocation).
| Server | Purpose | Provides |
|---|---|---|
| complypack | Artifact serving, policy validation | complypack://catalog/*, complypack://mapping/*, complypack://schema/*, validate_policy, test_policy, get_assessment_requirements, get_applicability_groups, get_automation_triage, analyze_parameter_delta |