Agentic AI Atlasby a5c.ai
OverviewWikiGraphFor AgentsEdgesSearchWorkspace
/
GitHubDocsDiscord
iiRecord
Agentic AI Atlas · developer-relations (Library)
page:library-developer-relationsa5c.ai
Search record views/
Record · tabs

Available views

II.Record viewspp. 1 - 1
overviewarticlejsongraph
II.
Page JSON

page:library-developer-relations

Structured · live

developer-relations (Library) json

Inspect the normalized record payload exactly as the atlas UI reads it.

File · wiki/library/developer-relations.mdCluster · wiki
Record JSON
{
  "id": "page:library-developer-relations",
  "_kind": "Page",
  "_file": "wiki/library/developer-relations.md",
  "_cluster": "wiki",
  "attributes": {
    "nodeKind": "Page",
    "title": "developer-relations (Library)",
    "displayName": "developer-relations (Library)",
    "slug": "library/developer-relations",
    "articlePath": "wiki/library/developer-relations.md",
    "article": "\n# developer-relations\n\nThe **first developer-relations specialization** in the library. Before it, the only devrel\nartifact anywhere was a single stub agent\n([`../sdk-platform-development/agents/devrel/AGENT.md`](../sdk-platform-development/agents/devrel/AGENT.md),\nmarked *implementation pending*) — referenced here as the seed, left in place, never edited.\nThis specialization is additive: its personas are new `devrel-*` agents defined inline in the\nflagship process. It carries one product change end-to-end — from API-change intake through\nexecuted sample apps, adversarially verified content, policy-gated external publishing, and\ncommunity engagement — with routed human approval on every action that leaves the org\nboundary.\n\n## Flagship process: devrel-campaign\n\n`devrel-campaign.js` (`@process developer-relations/devrel-campaign`) walks one product change\nthrough the whole campaign. Every subtask is `kind:'agent'` (no shell subtasks — repo\noverride); combinators are reused from\n[`../common-utilities/routed-gate-combinators.js`](../common-utilities/routed-gate-combinators.js).\n\n| Phase | What happens |\n|---|---|\n| 0 | `kipRecall` at intake (kind `developer-relations`) — prior devrel content on these APIs, recurring community questions/FAQs, past sample-app patterns thread into every later task. Empty store = fresh brain, never an error. Validation throws on a `productChange` missing `id`, `title`, or a non-empty `changedApis` array |\n| 1 | `dvr.intake` — inventories changed APIs against `apiSurfaceRef`, derives/validates `sampleAppSpecs[]` (one runnable app per key capability), produces the `contentPlan` (blog/tutorial/video-script angles); flags `openQuestions` without blocking. A derived spec missing a runnable build+run command throws before any build |\n| 2 | `dvr.build-sample-app` — `ctx.parallel.all` over `intake.sampleAppSpecs`. Each build follows the docs and MUST actually build **and run** the app, capturing stdout/stderr/exit code to `runOutputPath`. `built:false` or a non-zero exit is recorded honestly (no green-by-assertion, no fallback stub) |\n| 3 | **Adversarial sample-app accuracy gate** — `adversarialGate` (`developer-relations.sample-app-accuracy`). Critics independently RE-RUN every sample against the current API surface and cross-check every API call. **A failed gate returns `success:false` before any approval/publish** |\n| 4 | `dvr.produce-content` — 3-way `ctx.parallel.all` over `CONTENT_PIECES`. Each piece is drafted ONLY from the executed samples + intake; every snippet is lifted from a sample that actually ran. Composes the technical-documentation point tasks + content-writer persona **by name** |\n| 5 | **Adversarial content technical-accuracy gate** — `adversarialGate` (`developer-relations.content-accuracy`). Critics EXTRACT and EXECUTE every code snippet and cross-check every technical claim against the sample-app run output + current docs. **A failed gate returns `success:false` before any approval/publish** |\n| 6 | Policy-gated **sample-app repo publish** — `routedBreakpoint` `sample-app-repo-publish` (devrel-lead); on `approved===true` `dvr.publish-sample-app` pushes/updates the public sample repo |\n| 7 | Policy-gated **external content publish** — `routedBreakpoint` `external-content-publish` (devrel-lead), ONE approval covering all three pieces; on `approved===true` `dvr.publish-content` runs per piece via `ctx.parallel.all`, each via the named channel persona. Honors `embargoUntil` (early publish = failure, not retry) |\n| 8 | Community triage — `dvr.setup-community-triage` scans `communityThreadsDir`, matches threads against the new content + kip FAQs, and DRAFTS replies (no send). `routedBreakpoint` `community-reply-send` (community-manager) gates the outbound **only when `repliesDrafted > 0`**; on `approved===true` `dvr.send-community-replies` posts them. Zero threads records a no-op, never fabricates threads |\n| 9 | `dvr.engagement-retro` consolidates the outcomes into a retro doc; `kipAssert` (kind `developer-relations`) captures content outcomes (with approval provenance), sample-app accuracy results, the content gate outcome, new FAQs, and community-thread outcomes. Assert failures are reported by the librarian task, never swallowed |\n\n**Inputs:** `{ productChange: {id, title, summary, changedApis[] (non-empty), docsRefs[], sampleAppSpecs?, sourceMaterials?, embargoUntil?} (required), repoRoot?='.', apiSurfaceRef?='docs/', contentChannels?, communityThreadsDir?='artifacts/community/inbox', sampleRepoTarget?, maxFixAttempts?=2, kipEnabled?=true, kipDir?='.a5c/kip', kipModel?='sonnet' }`\n\n**Outputs:** `{ success, intake, sampleApps, sampleAppGate, content, contentGate, gatedActions, publishes, communityTriage, retro, kipFactsAsserted, artifacts, metadata }` — `success = sampleAppGate.passed && contentGate.passed && every gatedActions record satisfies (!required || approved === executed)`. A failed sample-app **or** content gate returns `success:false` before any publish/approval, with all three gated actions recorded as skipped.\n\n## Executed-evidence quality gates\n\nBoth accuracy gates run through the `adversarialGate` combinator and demand **executed\nevidence** — read-only review is a protocol failure:\n\n- **`developer-relations.sample-app-accuracy`** — `sample-execution-critic` (RE-RUNS every\n  sample against the current surface, captures its own stdout/exit) + `api-currency-critic`\n  (re-extracts every API call and matches it against `apiSurfaceRef`; any deprecated/removed/\n  hallucinated call fails). Fixer: built-in `gateFixerTask` edits the offending sample.\n- **`developer-relations.content-accuracy`** — `snippet-execution-critic` (extracts and runs\n  every snippet, captures output) + `claim-cross-check-critic` (builds a claim-trace table;\n  any claim with no evidence source or contradicting the sample run output fails). Fixer:\n  built-in `gateFixerTask` edits the offending piece.\n\nCritic independence is enforced by the combinator (fresh parallel instances; producers never\nreview their own work). `passed:true` with an empty evidence array is coerced to a protocol\nfailure. Each critic prompt pins the exact verdict JSON shape `{ passed, issues[], evidence[] }`\nat its end (prior insight: 3/12 critics drifted shape). On fix-budget exhaustion the combinator\nraises `developer-relations.sample-app-accuracy.gate-escalation` /\n`developer-relations.content-accuracy.gate-escalation` (expert `owner`), pushed to\n`metadata.breakpointsHit`.\n\n## Policy-gated actions\n\nAll approvals go through `routedBreakpoint`; for the three policy-gated actions the\n`breakpointId` **equals** the actionId and tags are `['policy-gated','developer-relations']`,\nstrategy `'single'`. Fail-closed: the executor task runs **only** on `approved === true` — a\nrejection is honored, recorded, and never worked around.\n\n| actionId | expert | when | fail-closed behavior |\n|---|---|---|---|\n| `sample-app-repo-publish` | devrel-lead | Phase 6, always (after both accuracy gates pass) | `dvr.publish-sample-app` runs only on `approved===true`; rejection records the decision and leaves the repo untouched |\n| `external-content-publish` | devrel-lead | Phase 7, always — ONE approval covering all three pieces | `dvr.publish-content` (x3 via `ctx.parallel.all`) runs only on `approved===true`; `embargoUntil` honored (early publish = failure); each outcome audited |\n| `community-reply-send` | community-manager | Phase 8, **only when `repliesDrafted > 0`** | `dvr.send-community-replies` runs only on `approved===true`; no send for any thread not covered by the approval; skipped/rejected recorded, never worked around |\n\n`outputs.gatedActions` records **every** decision — `{ actionId, required, approved,\nautoApproved, response, executed }` per action, including non-interactive auto-approvals\n(recorded raw from the BreakpointResult) and skipped gates\n(`{ required:false, approved:false, autoApproved:false, executed:false }` — never omitted).\n`metadata.breakpointsHit` logs every raised breakpointId in order.\n\n## Composition by name\n\nThe content pieces reuse existing library point tasks rather than re-implementing them —\n`dvr.produce-content` composes, **by name**:\n\n- [`technical-documentation/interactive-tutorials`](../technical-documentation/interactive-tutorials.js) — the tutorial piece (executable walkthrough).\n- [`technical-documentation/how-to-guides`](../technical-documentation/how-to-guides.js) — the blog/how-to angle.\n- [`technical-documentation/api-reference-docs`](../technical-documentation/api-reference-docs.js) — the reference sections.\n- [`communication/content-writer`](../communication/content-writer.js) — the prose-drafting persona for each piece.\n\nThe gated-send skeleton follows\n[`communication/multi-audience-announcement-pipeline.js`](../communication/multi-audience-announcement-pipeline.js):\nthe `recordGatedAction` audit shape, `routedBreakpoint(breakpointId = actionId, policy-gated\ntag)`, fail-closed executors, a single shared external approval covering multiple outputs, the\nexecuted-evidence gate, and the fail-closed early return on a failed gate.\n\n## Parallel tracks\n\n- `ctx.parallel.all` over `intake.sampleAppSpecs` — concurrent docs-driven sample-app builds (Phase 2).\n- `adversarialGate` fans its critics out concurrently (Phases 3 and 5).\n- `ctx.parallel.all` over `CONTENT_PIECES` — concurrent content production (Phase 4).\n- `ctx.parallel.all` over `CONTENT_PIECES` — concurrent publish executors under the single `external-content-publish` approval (Phase 7).\n\n## kip integration\n\n`kipRecall` at intake (topic: prior devrel content on these APIs, recurring community\nquestions/FAQs, past sample-app patterns for `productChange.title`; kind\n`developer-relations`) and `kipAssert` at close — content published-to channel with approval\nprovenance, sample-app accuracy results with `runOutputPath`, the content-gate outcome, new\nFAQ candidates from triage, and community-thread outcomes with `community-reply-send`\nprovenance. Gated on `kipEnabled`; an empty store is a fresh brain, never an error; assert\nfailures are reported by the librarian task, never swallowed. See\n[`../shared/skills/kip-librarian`](../shared/skills).\n\n## No fallbacks\n\n- Missing `productChange` / `id` / `title` / non-empty `changedApis` throws at Phase 0.\n- Unknown keys in `contentChannels` throw against `CONTENT_PIECES` (never silently ignored).\n- A derived `sampleAppSpecs` entry without a runnable build+run command throws before any build.\n- `expertFor` / `actionFor` / `channelFor` are throwing lookups — no silent defaults.\n- A failed sample-app or content gate ends the run with `success:false` before any external action; rejected gates are honored, never worked around.\n\n## Usage\n\n```bash\nbabysitter run:create \\\n  --process library/specializations/developer-relations/devrel-campaign.js \\\n  --inputs '{\n    \"productChange\": {\n      \"id\": \"PC-3.4-webhooks\",\n      \"title\": \"Signed webhook deliveries\",\n      \"summary\": \"v3.4 adds HMAC signatures + a retry endpoint to the webhooks API.\",\n      \"changedApis\": [\"webhooks.createEndpoint\", \"webhooks.verifySignature\", \"webhooks.retry\"],\n      \"docsRefs\": [\"docs/webhooks.md\"],\n      \"embargoUntil\": \"2026-08-01T09:00:00Z\"\n    },\n    \"apiSurfaceRef\": \"docs/\",\n    \"contentChannels\": { \"blog\": \"devblog\", \"tutorial\": \"docs-site\", \"video-script\": \"youtube\" },\n    \"sampleRepoTarget\": \"org/webhooks-samples\",\n    \"communityThreadsDir\": \"artifacts/community/inbox\",\n    \"maxFixAttempts\": 2\n  }'\n```\n\n## Files\n\n- [`devrel-campaign.js`](./devrel-campaign.js) — the flagship process (8 `dvr.*` Style-A agent tasks + orchestration).\n- Combinators: [`../common-utilities/routed-gate-combinators.js`](../common-utilities/routed-gate-combinators.js) — `routedBreakpoint`, `adversarialGate`, `kipRecall`, `kipAssert`, `gateFixerTask`.\n- Seed: [`../sdk-platform-development/agents/devrel/AGENT.md`](../sdk-platform-development/agents/devrel/AGENT.md) — the pre-existing devrel agent stub (referenced, not modified).\n",
    "documents": [
      "specialization:developer-relations"
    ]
  },
  "outgoingEdges": [
    {
      "from": "page:library-developer-relations",
      "to": "specialization:developer-relations",
      "kind": "documents"
    }
  ],
  "incomingEdges": [
    {
      "from": "page:index",
      "to": "page:library-developer-relations",
      "kind": "contains_page"
    }
  ]
}

Shortcuts

Back to overview
Open graph tab