Skip to content

feat(persona-slack-comms): publish slack-comms as an installable persona pack - #213

Merged
kjgbot merged 8 commits into
mainfrom
persona/slack-comms
Jun 7, 2026
Merged

kjgbot merged 8 commits into
mainfrom
persona/slack-comms

Conversation

@kjgbot

@kjgbot kjgbot commented Jun 7, 2026 •

Copy link
Copy Markdown
Contributor

What

Publish the slack-comms persona as a proper npm-installable persona pack under packages/persona-slack-comms, replacing the former examples/slack-comms/ example. It now matches the repo's persona-pack convention (the persona-autonomous-actor / persona-nango-integrations shape) so consumers install the same definition with the workforce CLI instead of hand-maintaining a divergent example copy.

The persona is a comms-only Slack liaison for a multi-agent engineering team: it relays human Slack messages to the agent team and surfaces milestones, decisions, blockers, and security incidents back to humans via relayfile writeback. It never writes code.

Package contents (packages/persona-slack-comms/)

  • package.json — @agentworkforce/persona-slack-comms@0.1.0, type: module, main/types, the agentworkforce.personas field, exports map (incl. ./persona.json and ./personas/slack-comms.json), files, scripts.test, keywords, license, engines, publishConfig.access: public, and repository.directory.
  • personas/slack-comms.json — the persona JSON (source of truth carried over from the example). Exactly 3 skills (@agent-relay/setting-up-relayfile, @agent-relay/orchestrating-agent-relay, @agent-workforce/persona-relayfile-mount); using-agent-relay stays removed. agentsMd points at the shipped ./slack-comms.md sidecar.
  • personas/slack-comms.md — the agentsMd operating spec, moved into the pack.
  • index.js / index.d.ts — compatibility exports mirroring the reference packs.
  • README.md — install via agentworkforce install @agentworkforce/persona-slack-comms, the skills it loads, and the key behaviors.
  • test/persona.test.mjs — validates the persona JSON loads and has the expected fields/skills.

Cleanup

  • Deleted the old examples/slack-comms/ directory entirely.

Workspace

pnpm-workspace.yaml already globs packages/*, so no manual workspace registration was needed.

Validation

  • node --test packages/persona-slack-comms/test/persona.test.mjs → 8/8 pass.
  • The real persona loader discovers slack-comms with zero warnings and resolves the slack-comms.md sidecar.
  • Confirmed the skill set is exactly the 3 above with no using-agent-relay.

🤖 Generated with Claude Code

Comms-only Slack liaison for a multi-agent engineering team. Owns
human-facing Slack comms for #proj-cloud via relayfile writeback, relays
human messages to the agent team over agent-relay #general, and surfaces
milestones/decisions/blockers/security incidents back to humans. Never
writes code.

Encodes writeback-as-files discipline (threaded replies vs top-level
announcements), flush verification via the mount state.json, threaded
brief-yet-detailed style with real <@memberid> mentions, and the
debug-log drop-guard plus out-of-band relayfile read for recovering
dropped/degraded inbound events (documented as a temporary stopgap).

Declares the relayfile/relay reading skills and puts the full operating
spec in an agentsMd sidecar, matching the persona-maker idiom.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@codeant-ai

codeant-ai Bot commented Jun 7, 2026

Copy link
Copy Markdown

Your free trial PR review limit of 300 PRs has been reached. Please upgrade your plan to continue using CodeAnt AI.

@coderabbitai

coderabbitai Bot commented Jun 7, 2026 •

Copy link
Copy Markdown
Contributor

Review Change Stack

Warning

Review limit reached

@agent-relay-code[bot], we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 45 minutes and 47 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 437b0b86-80b9-47b4-b5e6-91f9eb890aed

📥 Commits

Reviewing files that changed from the base of the PR and between 0f14a93 and 56bcda1.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (14)
  • .agentworkforce/workforce/personas/autonomous-actor.json
  • .agentworkforce/workforce/skills/auto-merge-and-composition-safety/SKILL.md
  • .agentworkforce/workforce/skills/autonomous-run-contract/SKILL.md
  • .agentworkforce/workforce/skills/dormant-flip-and-rollback/SKILL.md
  • .agentworkforce/workforce/skills/instrument-dont-guess/SKILL.md
  • .agentworkforce/workforce/skills/swarm-blockers-and-gate-scoreboard/SKILL.md
  • .agentworkforce/workforce/skills/tiered-acceptance/SKILL.md
  • packages/persona-slack-comms/README.md
  • packages/persona-slack-comms/index.d.ts
  • packages/persona-slack-comms/index.js
  • packages/persona-slack-comms/package.json
  • packages/persona-slack-comms/personas/slack-comms.json
  • packages/persona-slack-comms/personas/slack-comms.md
  • packages/persona-slack-comms/test/persona.test.mjs
📝 Walkthrough

Walkthrough

Adds a new Slack Comms example: a persona JSON, a detailed operational spec for writeback-based Slack relay and drop-guard recovery, and a README with run/connectivity notes.

Changes

Slack Comms Agent Component

Layer / File(s) Summary
Persona Configuration
examples/slack-comms/persona.json
Persona JSON defines slack-comms as a comms-only agent with Slack integration stub, required relay/relayfile skills, Codex harness settings, $TASK_DESCRIPTION system prompt, and pointer to slack-comms.md.
Operational Specification
examples/slack-comms/slack-comms.md
Spec sets comms-only constraints (no code/polling), JSON relayfile writeback rules (threading/top-level), post-write delivery verification via state.json and pendingWriteback, messaging style (threaded, <@id> mentions), drop-guard recovery using integration-events logs and out-of-band relayfile reads (requires X-Correlation-Id and fresh creds), anti-goals, and the per-event output contract.
Quick Reference Guide
examples/slack-comms/README.md
README outlines component responsibilities (relay to #proj-cloud, forward to agent-relay #general``, topics surfaced), links to the full spec, shows a short run command, and notes Slack connection should use the relayfile mount/discovery first.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

🐰 I hop through mounts and writeback trees,
I guard dropped events and follow the beams,
No code to write, just relay and verify,
Threaded, concise, with mentions that fly,
A little rabbit cheer for Slack comms on high!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title 'feat(persona-slack-comms): publish slack-comms as an installable persona pack' accurately describes the main change—converting the slack-comms example into a publishable npm persona pack under packages/persona-slack-comms.
Description check ✅ Passed The description clearly explains the purpose (publishing slack-comms as an npm-installable persona pack), package contents, cleanup steps, and validation results, all of which align with the actual changeset.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch persona/slack-comms

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a new Slack liaison agent, slack-comms, to relay messages between Slack and an engineering agent team. The feedback identifies several key issues: the use of a non-standard and deprecated model (openai-codex/gpt-5.3-codex), filesystem isolation constraints that prevent the sandboxed agent from accessing the host's log file, ambiguity in the path to the credentials file, and a logical limitation in the drop-guard mechanism where dropped events cannot be recovered if the agent is not triggered.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

}
],
"harness": "codex",
"model": "openai-codex/gpt-5.3-codex",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The model openai-codex/gpt-5.3-codex is not a standard OpenAI model (and the Codex series is deprecated). If this is a placeholder or a custom model, ensure it is supported by the target environment; otherwise, consider using a standard supported model such as gpt-4o to prevent execution failures.

Suggested change
"model": "openai-codex/gpt-5.3-codex",
"model": "gpt-4o",

**Do not trust injection alone.** Treat the debug log as the source of truth:

```
~/.agentworkforce/pear/integration-events.log

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Since this persona runs under the codex harness with sandboxing enabled by default, the agent operates in an isolated filesystem environment. It will not have access to the host's home directory (~/.agentworkforce/pear/integration-events.log). To make the drop-guard feature functional, the log file must be exposed to the sandbox, or the persona configuration must explicitly address how this log is made accessible to the sandboxed agent.


```
GET https://api.relayfile.dev/v1/workspaces/<workspaceId>/fs/file?path=<urlencoded remote path>
Authorization: Bearer <token from <mount>/.relay/creds.json>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The term <mount> is ambiguous here. Specify the exact path relative to the workspace root (e.g., .integrations/slack/.relay/creds.json or .integrations/slack/channels/<channelId>__<slug>/.relay/creds.json) so the agent can locate the credentials file without ambiguity.

Comment on lines +124 to +125
- Do not poll integrations or the mount on a timer. React to events; recover
drops via the debug log.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Since the agent is event-driven and does not poll, it will only run when a successful event triggers it. If an event is silently dropped, the agent will not be triggered, meaning the drop can only be detected and recovered when a subsequent successful event eventually triggers the agent. Consider clarifying this limitation or recommending a periodic cron/schedule trigger to ensure timely drop recovery.

Per maintainer direction the persona no longer declares
@agent-relay/using-agent-relay; it retains setting-up-relayfile,
orchestrating-agent-relay, and persona-relayfile-mount.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@codeant-ai

codeant-ai Bot commented Jun 7, 2026

Copy link
Copy Markdown

Your free trial PR review limit of 300 PRs has been reached. Please upgrade your plan to continue using CodeAnt AI.

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 1 potential issue.

View 2 additional findings in Devin Review.

Open in Devin Review

Comment thread examples/slack-comms/persona.json Outdated
@@ -0,0 +1,42 @@
{
"id": "slack-comms",
"intent": "communication",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚩 Intent "communication" is not in the closed PERSONA_INTENTS vocabulary

The persona uses "intent": "communication" but this value is not in the PERSONA_INTENTS array at packages/persona-kit/src/constants.ts:30-62. The strict parser parsePersonaSpec (packages/persona-kit/src/parse.ts:1099) calls isIntent(intent) which would reject this value. However, the documented usage (agentworkforce agent ./examples/slack-comms/persona.json) routes through the local persona loader's standaloneSpecFromOverride (packages/cli/src/local-personas.ts:737), which does NOT validate intent against the closed vocabulary — it passes the string through as-is. So the example works as documented, but the intent is outside the recognized vocabulary. If this persona were ever registered in the catalog or processed through parsePersonaSpec, it would fail. All other examples (review-agent uses review, linear-shipper uses implement-frontend, proactive-issue-resolver uses relay-orchestrator) use intents from the closed list. Consider adding "communication" to PERSONA_INTENTS or using an existing intent like "documentation".

Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (4)
examples/slack-comms/slack-comms.md (4)

94-98: 💤 Low value

Consider adding language specifiers to fenced code blocks.

The markdown linter flags this HTTP example block. Adding http or text would improve formatting.

📝 Suggested fix
-```
+```http
 GET https://api.relayfile.dev/v1/workspaces/<workspaceId>/fs/file?path=<urlencoded remote path>
 Authorization: Bearer <token from <mount>/.relay/creds.json>
 X-Correlation-Id: <any non-empty id>
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @examples/slack-comms/slack-comms.md around lines 94 - 98, The fenced code
block showing the HTTP GET example in examples/slack-comms/slack-comms.md lacks
a language specifier; update that triple-backtick fence to include a language
(e.g., use http or text) so the linter formats it correctly and preserves
header capitalization and spacing for the GET request example.


</details>

<!-- cr-comment:v1:d928ed9ca3f4772b86c1e82f -->

_Source: Linters/SAST tools_

---

`27-29`: _💤 Low value_

**Consider adding language specifiers to fenced code blocks.**

The markdown linter flags missing language identifiers for better syntax highlighting. This is a minor formatting improvement.






<details>
<summary>📝 Suggested fix</summary>

```diff
-```
+```text
 .integrations/slack/channels/<channelId>__<slug>/messages/...
 ```
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @examples/slack-comms/slack-comms.md around lines 27 - 29, Update the fenced
code block that contains the path string
".integrations/slack/channels/__/messages/..." to include a
language specifier (e.g., change the opening totext) so the markdown
linter recognizes the language and enables proper syntax highlighting for that
snippet.


</details>

<!-- cr-comment:v1:60fba0f1ada86331be55134a -->

_Source: Linters/SAST tools_

---

`49-51`: _💤 Low value_

**Consider adding language specifiers to fenced code blocks.**

The markdown linter flags missing language identifiers. Same minor formatting improvement as above.






<details>
<summary>📝 Suggested fix</summary>

```diff
-```
+```text
 .integrations/slack/channels/<channelId>__<slug>/messages/.relay/state.json
 ```
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @examples/slack-comms/slack-comms.md around lines 49 - 51, The fenced code
block that contains the path string
".integrations/slack/channels/__/messages/.relay/state.json" is
missing a language specifier; update that fenced block in
examples/slack-comms/slack-comms.md to include a language identifier (for
example use "text") after the opening so the block becomestext and
satisfies the markdown linter.


</details>

<!-- cr-comment:v1:b644e17a5fd1cb86a683faf3 -->

_Source: Linters/SAST tools_

---

`81-83`: _💤 Low value_

**Consider adding language specifiers to fenced code blocks.**

Same minor markdown linting improvement.






<details>
<summary>📝 Suggested fix</summary>

```diff
-```
+```text
 ~/.agentworkforce/pear/integration-events.log
 ```
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @examples/slack-comms/slack-comms.md around lines 81 - 83, Add a language
specifier to the fenced code block that contains the line
"~/.agentworkforce/pear/integration-events.log" by changing the opening to include a language like "text" (e.g.,text) so the markdown linting and
rendering show the block correctly; update the fenced block that contains that
path accordingly.


</details>

<!-- cr-comment:v1:23a489842bcdd5a9efd98678 -->

_Source: Linters/SAST tools_

</blockquote></details>

</blockquote></details>

<details>
<summary>🤖 Prompt for all review comments with AI agents</summary>

Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In @examples/slack-comms/slack-comms.md:

  • Around line 94-98: The fenced code block showing the HTTP GET example in
    examples/slack-comms/slack-comms.md lacks a language specifier; update that
    triple-backtick fence to include a language (e.g., use http or text) so
    the linter formats it correctly and preserves header capitalization and spacing
    for the GET request example.
  • Around line 27-29: Update the fenced code block that contains the path string
    ".integrations/slack/channels/__/messages/..." to include a
    language specifier (e.g., change the opening totext) so the markdown
    linter recognizes the language and enables proper syntax highlighting for that
    snippet.
  • Around line 49-51: The fenced code block that contains the path string
    ".integrations/slack/channels/__/messages/.relay/state.json" is
    missing a language specifier; update that fenced block in
    examples/slack-comms/slack-comms.md to include a language identifier (for
    example use "text") after the opening so the block becomestext and
    satisfies the markdown linter.
  • Around line 81-83: Add a language specifier to the fenced code block that
    contains the line "~/.agentworkforce/pear/integration-events.log" by changing
    the opening to include a language like "text" (e.g.,text) so the
    markdown linting and rendering show the block correctly; update the fenced block
    that contains that path accordingly.

</details>

---

<details>
<summary>ℹ️ Review info</summary>

<details>
<summary>⚙️ Run configuration</summary>

**Configuration used**: Organization UI

**Review profile**: CHILL

**Plan**: Pro Plus

**Run ID**: `373c292e-da52-468f-8cc1-483fff58e0bb`

</details>

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 75e95a867071976ca3489360ff3da2f9c9c0d589 and 1b4e9a90727aa502f540bcb78a47f2fef92343e4.

</details>

<details>
<summary>📒 Files selected for processing (3)</summary>

* `examples/slack-comms/README.md`
* `examples/slack-comms/persona.json`
* `examples/slack-comms/slack-comms.md`

</details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->

@agent-relay-code

Copy link
Copy Markdown
Contributor

Fixed two validated PR issues:

Validation run:

  • corepack pnpm -r build
  • Isolated launch flow:
    • agentworkforce sources add ./examples/slack-comms
    • agentworkforce agent slack-comms --dry-run
    • dry-run passed, including all 4 declared skill installs
  • corepack pnpm --filter @agentworkforce/persona-kit test
  • corepack pnpm --filter @agentworkforce/cli test
  • JSON parse sanity check passed

I’m not printing READY because I cannot verify live GitHub CI status, mergeability, or merge conflicts from this sandbox.

@codeant-ai

codeant-ai Bot commented Jun 7, 2026

Copy link
Copy Markdown

Your free trial PR review limit of 300 PRs has been reached. Please upgrade your plan to continue using CodeAnt AI.

@agent-relay-code

Copy link
Copy Markdown
Contributor

✅ pr-reviewer applied fixes — committed and pushed 0f14a93 to this PR. The notes below describe what changed.

Fixed two validated PR issues:

Validation run:

  • corepack pnpm -r build
  • Isolated launch flow:
    • agentworkforce sources add ./examples/slack-comms
    • agentworkforce agent slack-comms --dry-run
    • dry-run passed, including all 4 declared skill installs
  • corepack pnpm --filter @agentworkforce/persona-kit test
  • corepack pnpm --filter @agentworkforce/cli test
  • JSON parse sanity check passed

I’m not printing READY because I cannot verify live GitHub CI status, mergeability, or merge conflicts from this sandbox.

…ona pack

Convert the slack-comms example into a proper npm-installable persona pack
under packages/persona-slack-comms, matching the persona-autonomous-actor /
persona-nango-integrations convention:

- package.json: @agentworkforce/persona-slack-comms@0.1.0 with the
  agentworkforce.personas field, exports map, files, test script, keywords,
  publishConfig.access=public, and repository.directory.
- personas/slack-comms.json: the persona JSON (source of truth = the former
  example). Exactly 3 skills (setting-up-relayfile, orchestrating-agent-relay,
  persona-relayfile-mount); using-agent-relay stays removed. agentsMd points at
  the shipped ./slack-comms.md sidecar.
- personas/slack-comms.md: the agentsMd operating spec, moved into the pack.
- index.js / index.d.ts: mirror the reference packs' compatibility exports.
- README.md and test/persona.test.mjs adapted from the reference pack.
- Delete the old examples/slack-comms/ directory.

packages/* is already globbed by pnpm-workspace.yaml, so no manual workspace
registration is needed. Validated: node --test passes (8/8) and the real
persona loader discovers slack-comms with zero warnings and resolves the
sidecar.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@codeant-ai

codeant-ai Bot commented Jun 7, 2026

Copy link
Copy Markdown

Your free trial PR review limit of 300 PRs has been reached. Please upgrade your plan to continue using CodeAnt AI.

@kjgbot kjgbot changed the title feat(persona): add slack-comms liaison example persona feat(persona-slack-comms): publish slack-comms as an installable persona pack Jun 7, 2026
@agent-relay-code

Copy link
Copy Markdown
Contributor

⚠️ pr-reviewer push failed (exit 1) — fixes were not applied to the PR. The notes below are advisory and were not pushed.

Fixed the demonstrated PR breakage.

Changed:

  • examples/slack-comms/persona.json: changed invalid intent communication to existing valid intent relay-orchestrator.
  • packages/persona-kit/src/parse.test.ts: added the new slack-comms example to the parser fixture test.

Verified:

  • corepack pnpm -r build
  • corepack pnpm --filter @agentworkforce/persona-kit test
  • corepack pnpm --filter @agentworkforce/cli test
  • direct parse/spawn-plan smoke for examples/slack-comms/persona.json
  • corepack pnpm -r lint
  • corepack pnpm -r typecheck
  • corepack pnpm run typecheck:examples
  • corepack pnpm -r test

Note: the root pnpm run check wrapper could not run because this sandbox lacks a bare pnpm shim, so I ran its equivalent recursive lint/typecheck/test steps through corepack pnpm.

Persona now declares @agent-relay/workspace-layout (navigate the mount via
LAYOUT.md / by-id / by-title aliases) and @agent-relay/writeback-as-files
(drop-JSON writeback contract, schema discovery, dead-letter recovery) —
both core to its read/post job. Skill set is now 5; using-agent-relay stays out.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@codeant-ai

codeant-ai Bot commented Jun 7, 2026

Copy link
Copy Markdown

Your free trial PR review limit of 300 PRs has been reached. Please upgrade your plan to continue using CodeAnt AI.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 issue found across 8 files (changes from recent commits).

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="packages/persona-slack-comms/README.md">

<violation number="1" location="packages/persona-slack-comms/README.md:79">
P2: Publishing docs reference the wrong GitHub workflow; `publish-persona.yml` publishes `personas-core`, not `persona-*` packs with a `package` selector.</violation>
</file>

Tip: Review your code locally with the cubic CLI to iterate faster.

Re-trigger cubic

Comment thread packages/persona-slack-comms/README.md Outdated

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2 issues found across 7 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="packages/persona-slack-comms/personas/slack-comms.json">

<violation number="1" location="packages/persona-slack-comms/personas/slack-comms.json:13">
P2: Skill `id` fields use scoped package names (`@agent-relay/...`, `@agent-workforce/...`) instead of bare short names. This breaks the repo convention where `id` is a bare identifier and `source` is the full package/URL reference. All 5 skills are affected.</violation>
</file>

<file name="packages/persona-slack-comms/personas/slack-comms.md">

<violation number="1" location="packages/persona-slack-comms/personas/slack-comms.md:86">
P2: The drop-guard rule is too strict and can cause duplicate recoveries by classifying delayed `injecting` events as dropped immediately.</violation>
</file>

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

},
"skills": [
{
"id": "@agent-relay/setting-up-relayfile",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: Skill id fields use scoped package names (@agent-relay/..., @agent-workforce/...) instead of bare short names. This breaks the repo convention where id is a bare identifier and source is the full package/URL reference. All 5 skills are affected.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At packages/persona-slack-comms/personas/slack-comms.json, line 13:

<comment>Skill `id` fields use scoped package names (`@agent-relay/...`, `@agent-workforce/...`) instead of bare short names. This breaks the repo convention where `id` is a bare identifier and `source` is the full package/URL reference. All 5 skills are affected.</comment>

<file context>
@@ -0,0 +1,52 @@
+  },
+  "skills": [
+    {
+      "id": "@agent-relay/setting-up-relayfile",
+      "source": "@agent-relay/setting-up-relayfile",
+      "description": "Canonical relayfile mount + writeback recipe. Read for the mount layout (.integrations/...), the writeback-as-files contract, writeback status/retry commands, and the creds/cloud-mount gotchas this persona depends on to read inbound events and post replies."
</file context>

```

Tail it. Every inbound is logged `received`; a delivered one also logs a
matching `injecting`. **Any `received` without a matching `injecting` is a

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: The drop-guard rule is too strict and can cause duplicate recoveries by classifying delayed injecting events as dropped immediately.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At packages/persona-slack-comms/personas/slack-comms.md, line 86:

<comment>The drop-guard rule is too strict and can cause duplicate recoveries by classifying delayed `injecting` events as dropped immediately.</comment>

<file context>
@@ -0,0 +1,139 @@
+```
+
+Tail it. Every inbound is logged `received`; a delivered one also logs a
+matching `injecting`. **Any `received` without a matching `injecting` is a
+dropped message you must recover.**
+
</file context>

@codeant-ai

codeant-ai Bot commented Jun 7, 2026

Copy link
Copy Markdown

Your free trial PR review limit of 300 PRs has been reached. Please upgrade your plan to continue using CodeAnt AI.

@agent-relay-code

Copy link
Copy Markdown
Contributor

✅ pr-reviewer applied fixes — committed and pushed c3763b1 to this PR. The notes below describe what changed.

Reviewed PR #213 against .workforce/pr.diff, changed files, and repo impact.

I did not leave any code changes: I found no reproducible breakage in the current checkout.

Validation run:

  • corepack pnpm install --frozen-lockfile passed
  • corepack pnpm -r run build passed
  • corepack pnpm --filter @agentworkforce/persona-slack-comms test passed
  • corepack pnpm --filter @agentworkforce/persona-slack-comms pack included JSON + markdown sidecar
  • Installed from the packed tarball through installPersonas; agentsMd rewrote to __assets/slack-comms/slack-comms.md and the sidecar copied correctly
  • corepack pnpm --filter @agentworkforce/persona-kit test passed
  • corepack pnpm --filter @agentworkforce/cli test passed after CI-style build
  • Root lint passed
  • Root test passed
  • Root typecheck was killed with exit 137 during concurrent recursive checks; the killed packages @agentworkforce/mcp-workforce and @agentworkforce/cli passed when rerun individually

I did not verify GitHub-side CI status, pending checks, or mergeability from GitHub, so I’m not marking this READY.

- harness/model -> claude / claude-sonnet-4-6 (matches notion-essay-pr Sonnet
  pairing; reasoning medium / 600s), updated test assertions.
- Sidecar: explicit comms-only / stay-in-lane rules — do not diagnose, fix, or
  task impl workers directly; route every engineering/bug issue (incl. ones
  affecting own comms) through the coordinator for triage + assignment.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@codeant-ai

codeant-ai Bot commented Jun 7, 2026

Copy link
Copy Markdown

Your free trial PR review limit of 300 PRs has been reached. Please upgrade your plan to continue using CodeAnt AI.

@agent-relay-code

Copy link
Copy Markdown
Contributor

✅ pr-reviewer applied fixes — committed and pushed 56bcda1 to this PR. The notes below describe what changed.

Fixed two PR issues:

  • Added the missing packages/persona-slack-comms importer to pnpm-lock.yaml, so pnpm install --frozen-lockfile passes in CI with the new workspace package.
  • Corrected the new README publishing instructions to point at .github/workflows/publish-internal-personas.yml, which is the workflow that publishes @agentworkforce/persona-* packs.

Verified locally:

  • corepack pnpm install --frozen-lockfile
  • corepack pnpm -r run build
  • corepack pnpm -r lint
  • corepack pnpm -r typecheck && corepack pnpm run typecheck:examples
  • corepack pnpm -r test
  • corepack pnpm --filter @agentworkforce/persona-slack-comms test
  • corepack pnpm --filter @agentworkforce/persona-slack-comms pack --pack-destination /tmp
  • Smoke-tested installPersonas() into a throwaway cwd and confirmed agentsMd rewrites to __assets/slack-comms/slack-comms.md.

I can’t assert GitHub CI/mergeability from this sandbox, so I’m not printing READY.

@codeant-ai

codeant-ai Bot commented Jun 7, 2026

Copy link
Copy Markdown

Your free trial PR review limit of 300 PRs has been reached. Please upgrade your plan to continue using CodeAnt AI.

@kjgbot
kjgbot merged commit 74f881b into main Jun 7, 2026
3 checks passed
@kjgbot
kjgbot deleted the persona/slack-comms branch June 7, 2026 18:31
khaliqgant added a commit that referenced this pull request Jun 10, 2026
* chore(skills): restore autonomous-run-contract SKILL.md

Accidentally removed in #213 (slack-comms persona pack) though
prpm.json still references it at
.agentworkforce/workforce/skills/autonomous-run-contract/SKILL.md.
Restored verbatim from 74f881b^.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* chore(skills): restore remaining autonomous-run skill pack

The auto-merge-and-composition-safety, dormant-flip-and-rollback,
instrument-dont-guess, swarm-blockers-and-gate-scoreboard, and
tiered-acceptance skills were accidentally removed in #213 (slack-comms
persona pack) but prpm.json still references all of them at
.agentworkforce/workforce/skills/. Restored verbatim from 74f881b^.

(autonomous-actor.json was intentionally relocated to
packages/persona-autonomous-actor and is not restored here.)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Ricky Schema Cascade <ricky@agent-relay.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
khaliqgant added a commit that referenced this pull request Jun 10, 2026
)

* chore(skills): restore autonomous-run-contract SKILL.md

Accidentally removed in #213 (slack-comms persona pack) though
prpm.json still references it at
.agentworkforce/workforce/skills/autonomous-run-contract/SKILL.md.
Restored verbatim from 74f881b^.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* chore(skills): restore remaining autonomous-run skill pack

The auto-merge-and-composition-safety, dormant-flip-and-rollback,
instrument-dont-guess, swarm-blockers-and-gate-scoreboard, and
tiered-acceptance skills were accidentally removed in #213 (slack-comms
persona pack) but prpm.json still references all of them at
.agentworkforce/workforce/skills/. Restored verbatim from 74f881b^.

(autonomous-actor.json was intentionally relocated to
packages/persona-autonomous-actor and is not restored here.)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat(persona): add linear-dispatcher persona pack

Autonomous Linear issue dispatcher: watches for ready-for-agent issues,
triages them, dispatches codex implementer + claude reviewer teams in
batches of 5, posts comments, and updates issue state to Agent Implementing.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(persona): add repo-router persona pack

Codebase navigator that maps all sibling repos, determines which repo(s)
an issue requires changes in, and spawns codex implementer + claude
reviewer agents to the correct repos. Handles multi-repo issues by
splitting work across parallel implementers.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(persona): use local skill reference for agentworkforce-repo-map

Bundle the skill MD in the persona package and reference it as a local
./skills/ path instead of an @-scoped package reference.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore: apply pr-reviewer fixes for #223

* fix(personas): ship local persona skills

* 5.4 for nango-integrations

* test(persona): update nango model expectation

---------

Co-authored-by: Ricky Schema Cascade <ricky@agent-relay.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: agent-relay-code[bot] <agent-relay-code[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant