Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Set up, run, and troubleshoot OpenTag with the published CLI across Slack, GitHub, GitLab, Linear, Lark / Feishu, Codex, Claude Code, OpenClaw, local config, platform credentials, and callback delivery.
.claude/skills/amplifthq-opentag/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-16 | ✗→✓ | ▲ Improved | -18% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 85% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 71% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 353% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 31% | 0% |
textSlack Source App -> self-hosted Control Plane -> paired local Runner -> ACP Agent in one local checkout -> GitHub Project Target/publication -> truthful result in the originating Slack thread
Slack is the only Source App. GitHub is the Project Target and publication/evidence provider. The Control Plane owns Slack ingress, custody, and projection; the Runner owns local execution.
references/control-plane.md
references/slack-setup.md
references/github-setup.md
references/codex-runner.md
references/troubleshooting.md
Load only the references whose branch applies.
explicitly trusts.
.envcontains only their host-side file paths and non-secret Slack identifiers.
input. Keep them out of chat, command arguments, logs, screenshots, and git.
delivery and GitHub publication through governed provider boundaries.
before enabling write-capable work.
facts. Preserve outcome_unknown until the original provider operation is reconciled.
deploy/compose/.env.example, using file-backed Slack secrets, then start Compose behind TLS. Completion: the Compose project reports healthy, /readyz succeeds, and bootstrap logs show the intended Slack binding without secret plaintext.
bash npm install -g @opentag/cli@0.11.0 opentag --version git -C /absolute/path/to/checkout status --short
Completion: the CLI reports 0.11.0, the user has accepted the checkout state, and the chosen ACP executor is locally authenticated.
Project Target. Omit secret flags so the CLI prompts locally.
bash opentag setup \ --relay https://control.example.com \ --project /absolute/path/to/checkout \ --executor codex \ --github-repository owner/repo \ --project-target-id target_team
Replace target_team with the active Slack binding's Project Target ID from Compose. Do not require a duplicate Runner environment variable for it.
Setup performs the initial pair. For an existing configuration that is still unpaired, complete that same pairing with:
bash opentag pair \ --relay https://control.example.com \ --trust-relay-origin https://control.example.com
Completion: redacted config shows paired_relay, the exact trusted origin, a paired Runner registration, and the intended GitHub target ID; pairing has registered that target through the active Slack binding and verified exact Control Plane readback. The bootstrap token is not retained in Runner config.
bash opentag start # or, after a global install: opentag service install opentag service start opentag service status
Completion: the service reports running and ready, the runtime credential is accepted by the Runner Control Context endpoint, and the configured ACP executor is ready.
bash opentag doctor opentag status opentag config show
Completion: required checks pass, the relay and Runner identities match, the checkout maps to the intended GitHub target, and displayed secrets are redacted.
bounded task. Completion: the signed Slack event creates one WorkThread and Run, the paired Runner claims one fenced Attempt, and the originating thread receives a concise result or an explicit actionable failure.
The setup is complete only when every completion criterion above holds on the paired route. A local process exit, queued delivery, generated pull-request URL, or Slack acknowledgement alone is insufficient.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-15 | pass→pass | 19,360 | 8,722 | -55% | 1 | 1 | 0% | 2,437 | 1,679 | -31% | 0 | 0 | — |
case-16 | fail→pass | 18,081 | 9,443 | -48% | 1 | 1 | 0% | 2,154 | 1,762 | -18% | 0 | 0 | — |
case-01 | fail→pass | 23,335 | 15,548 | -33% | 1 | 1 | 0% | 1,792 | 3,308 | +85% | 0 | 0 | — |
case-02 | fail→pass | 14,184 | 15,320 | +8% | 1 | 1 | 0% | 1,698 | 2,912 | +71% | 0 | 0 | — |
case-03 | fail→pass | 15,967 | 12,945 | -19% | 1 | 1 | 0% | 552 | 2,498 | +353% | 0 | 0 | — |
case-04 | fail→pass | 19,748 | 16,245 | -18% | 1 | 1 | 0% | 2,583 | 3,371 | +31% | 0 | 0 | — |
case-05 | fail→fail | 19,473 | 16,580 | -15% | 1 | 1 | 0% | 2,471 | 3,060 | +24% | 0 | 0 | — |
case-06 | fail→fail | 11,793 | 11,873 | +1% | 1 | 1 | 0% | 1,073 | 2,226 | +107% | 0 | 0 | — |
case-07 | fail→fail | 14,484 | 8,464 | -42% | 1 | 1 | 0% | 1,539 | 1,668 | +8% | 0 | 0 | — |
case-08 | fail→pass | 17,380 | 8,536 | -51% | 1 | 1 | 0% | 2,006 | 1,677 | -16% | 0 | 0 | — |
case-14 | fail→pass | 17,040 | 8,187 | -52% | 1 | 1 | 0% | 1,707 | 1,612 | -6% | 0 | 0 | — |
case-09 | fail→pass | 16,834 | 9,303 | -45% | 1 | 1 | 0% | 1,894 | 1,835 | -3% | 0 | 0 | — |
case-10 | fail→pass | 14,568 | 8,831 | -39% | 1 | 1 | 0% | 1,349 | 1,726 | +28% | 0 | 0 | — |
case-11 | fail→pass | 12,546 | 7,251 | -42% | 1 | 1 | 0% | 1,385 | 1,527 | +10% | 0 | 0 | — |
case-12 | fail→pass | 14,108 | 10,021 | -29% | 1 | 1 | 0% | 1,456 | 2,064 | +42% | 0 | 0 | — |
case-13 | fail→fail | 17,446 | 7,863 | -55% | 1 | 1 | 0% | 1,798 | 1,568 | -13% | 0 | 0 | — |
case-17 | pass→pass | 14,994 | 2,957 | -80% | 1 | 1 | 0% | 1,461 | 1,561 | +7% | 0 | 0 | — |
case-18 | fail→pass | 17,024 | 11,041 | -35% | 1 | 1 | 0% | 2,036 | 1,901 | -7% | 0 | 0 | — |
case-19 | fail→pass | 16,070 | 9,906 | -38% | 1 | 1 | 0% | 1,698 | 1,802 | +6% | 0 | 0 | — |
case-20 | fail→fail | 13,976 | 12,942 | -7% | 1 | 1 | 0% | 1,850 | 2,603 | +41% | 0 | 0 | — |
case-21 | pass→pass | 19,813 | 13,951 | -30% | 1 | 1 | 0% | 2,712 | 2,947 | +9% | 0 | 0 | — |
case-22 | fail→fail | 21,423 | 8,839 | -59% | 1 | 1 | 0% | 2,533 | 1,625 | -36% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 21 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +59 percentage points is the difference between those two pass rates over the 21 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 8/27/2026 | +64% |
| gemini-3.6-flash | verified | 8/17/2026 | +59% |
| gemini-3.6-flash | verified | 8/13/2026 | +67% |
Other measured skills in the registry, with their headline benchmark lift.