Skip to content

Document and vendor creating cloud persona references#73

Merged
khaliqgant merged 7 commits into
mainfrom
add-creating-cloud-persona-readme-vendor-refs
Jun 9, 2026
Merged

Document and vendor creating cloud persona references#73
khaliqgant merged 7 commits into
mainfrom
add-creating-cloud-persona-readme-vendor-refs

Conversation

@khaliqgant

@khaliqgant khaliqgant commented Jun 9, 2026

Copy link
Copy Markdown
Member

Summary

  • consolidate persona guidance into a single published creating-cloud-persona skill
  • remove the separate writing-agent-personas skill from README and prpm.json
  • fold the production-correctness rules into creating-cloud-persona, including integration scope mounting, sandbox mode, inputs, teams, handler patterns, delegation, relay-helper writebacks, and pre-merge checks
  • vendor current production examples from ../agents and Workforce examples/runtime references under skills/creating-cloud-persona/references
  • keep CLI deployment guidance in the consolidated skill: login, dry-run, deploy with --on-exists update, integration connect prompts, deployment listing, and destroy
  • bump agent-workforce-skills to 1.1.3, creating-cloud-persona to 1.0.4, and setting-up-relayfile to 1.1.1 for its updated cross-reference

Self-review

  • removed all references to writing-agent-personas after consolidation
  • verified creating-cloud-persona is now the single package for cloud/persona authoring and review
  • restored incidental manifest formatting churn so unrelated package descriptions are unchanged

Validation

  • parsed prpm.json and verified the consolidated package versions
  • verified all creating-cloud-persona package files exist
  • checked 61 vendored reference paths mentioned by the skill; all exist
  • confirmed no ../workforce / ../agents or writing-agent-personas references remain in authored guidance
  • confirmed no vendored node_modules, .workforce, .DS_Store, or PNG artifacts
  • ran git diff --check

@codeant-ai

codeant-ai Bot commented Jun 9, 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 9, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@khaliqgant, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 49 minutes and 28 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: d0f0fc8a-c6db-4e64-af22-dd0a55c26fa8

📥 Commits

Reviewing files that changed from the base of the PR and between 6c0c11e and fb4d93d.

📒 Files selected for processing (56)
  • README.md
  • memory/workspace/.relay/state.json
  • prpm.json
  • skills/creating-cloud-persona/SKILL.md
  • skills/creating-cloud-persona/references/agents/cloud-team-implementer/agent.ts
  • skills/creating-cloud-persona/references/agents/cloud-team-implementer/persona.json
  • skills/creating-cloud-persona/references/agents/cloud-team-implementer/persona.ts
  • skills/creating-cloud-persona/references/agents/cloud-team-reviewer/agent.ts
  • skills/creating-cloud-persona/references/agents/cloud-team-reviewer/persona.json
  • skills/creating-cloud-persona/references/agents/cloud-team-reviewer/persona.ts
  • skills/creating-cloud-persona/references/agents/granola/agent.ts
  • skills/creating-cloud-persona/references/agents/granola/persona.json
  • skills/creating-cloud-persona/references/agents/granola/persona.ts
  • skills/creating-cloud-persona/references/agents/hn-monitor/agent.ts
  • skills/creating-cloud-persona/references/agents/hn-monitor/persona.json
  • skills/creating-cloud-persona/references/agents/hn-monitor/persona.ts
  • skills/creating-cloud-persona/references/agents/linear-slack/agent.ts
  • skills/creating-cloud-persona/references/agents/linear/agent.ts
  • skills/creating-cloud-persona/references/agents/linear/persona.json
  • skills/creating-cloud-persona/references/agents/linear/persona.ts
  • skills/creating-cloud-persona/references/agents/package.json
  • skills/creating-cloud-persona/references/agents/repo-hygiene/agent.ts
  • skills/creating-cloud-persona/references/agents/repo-hygiene/persona.json
  • skills/creating-cloud-persona/references/agents/repo-hygiene/persona.ts
  • skills/creating-cloud-persona/references/agents/review/agent.ts
  • skills/creating-cloud-persona/references/agents/review/persona.json
  • skills/creating-cloud-persona/references/agents/review/persona.ts
  • skills/creating-cloud-persona/references/agents/spotify-releases/agent.ts
  • skills/creating-cloud-persona/references/agents/spotify-releases/persona.json
  • skills/creating-cloud-persona/references/agents/spotify-releases/persona.ts
  • skills/creating-cloud-persona/references/agents/tsconfig.json
  • skills/creating-cloud-persona/references/agents/vendor-monitor/agent.ts
  • skills/creating-cloud-persona/references/agents/vendor-monitor/persona.json
  • skills/creating-cloud-persona/references/agents/vendor-monitor/persona.ts
  • skills/creating-cloud-persona/references/relayfile-adapters/packages/relay-helpers/README.md
  • skills/creating-cloud-persona/references/workforce-cloud-persona-notes.md
  • skills/creating-cloud-persona/references/workforce/examples/linear-shipper/agent.ts
  • skills/creating-cloud-persona/references/workforce/examples/linear-shipper/persona.json
  • skills/creating-cloud-persona/references/workforce/examples/notion-essay-pr/agent.ts
  • skills/creating-cloud-persona/references/workforce/examples/notion-essay-pr/persona.json
  • skills/creating-cloud-persona/references/workforce/examples/proactive-issue-resolver/agent.ts
  • skills/creating-cloud-persona/references/workforce/examples/proactive-issue-resolver/persona.json
  • skills/creating-cloud-persona/references/workforce/examples/review-agent/agent.ts
  • skills/creating-cloud-persona/references/workforce/examples/review-agent/persona.json
  • skills/creating-cloud-persona/references/workforce/examples/review-agent/persona.ts
  • skills/creating-cloud-persona/references/workforce/examples/weekly-digest/agent.ts
  • skills/creating-cloud-persona/references/workforce/examples/weekly-digest/persona.json
  • skills/creating-cloud-persona/references/workforce/packages/cli/src/deploy-command.ts
  • skills/creating-cloud-persona/references/workforce/packages/deploy/src/extract-agent.ts
  • skills/creating-cloud-persona/references/workforce/packages/deploy/src/preflight.ts
  • skills/creating-cloud-persona/references/workforce/packages/persona-kit/schemas/persona.schema.json
  • skills/creating-cloud-persona/references/workforce/packages/persona-kit/src/types.ts
  • skills/creating-cloud-persona/references/workforce/packages/runtime/src/clients/index.ts
  • skills/creating-cloud-persona/references/workforce/packages/runtime/src/types.ts
  • skills/setting-up-relayfile/SKILL.md
  • skills/writing-agent-personas/SKILL.md
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch add-creating-cloud-persona-readme-vendor-refs

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.

@agent-relay-code

Copy link
Copy Markdown
Contributor

pr-reviewer could not complete review for #73 in AgentWorkforce/skills.
The review harness exited with code 1.
No review was posted; this needs operator attention.

agent-relay-code Bot added a commit that referenced this pull request Jun 9, 2026
@codeant-ai

codeant-ai Bot commented Jun 9, 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 6a82465 to this PR. The notes below describe what changed.

pr-reviewer could not complete review for #73 in AgentWorkforce/skills.
The review harness exited with code 1.
No review was posted; this needs operator attention.

@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 updates the creating-cloud-persona skill by adding a comprehensive set of vendored reference agents, Workforce examples, and packages under its references/ directory to make the skill self-contained. It also documents the new 'Team member' agent trigger pattern. The review identified several critical and high-severity issues in the vendored code: executing shell commands on the host instead of inside the isolated sandbox in the review agent, failing to check the exit code of git clone in the linear-shipper example, passing absolute paths with root prefixes to ctx.files.read in the granola agent, unsafe property access on potentially undefined external_urls in the spotify-releases agent, and potential runtime crashes from unhandled RangeErrors when calling .toISOString() on invalid dates in the repo-hygiene and weekly-digest agents.

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.

Comment on lines +425 to +434
const { stdout } = await execFileAsync('gh', [
'pr',
'view',
String(pr.number),
'--repo',
`${pr.owner}/${pr.repo}`,
'--json',
'state,mergeable,mergeStateStatus,reviewDecision,statusCheckRollup,headRefOid',
], { cwd: ctx.sandbox.cwd, encoding: 'utf8', maxBuffer: 1024 * 1024 });
const state = parsePrReadyState(stdout);

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

critical

Using execFileAsync from node:child_process directly runs the gh command on the host process of the agent runtime rather than inside the isolated sandbox. In a remote or containerized environment, the host may not have the gh CLI installed, will not have the GitHub credentials configured, and the directory ctx.sandbox.cwd will not exist on the host, causing a runtime crash (ENOENT). Use ctx.sandbox.exec to run the command inside the sandbox instead.

    const res = await ctx.sandbox.exec(`gh pr view ${pr.number} --repo '${pr.owner}/${pr.repo}' --json state,mergeable,mergeStateStatus,reviewDecision,statusCheckRollup,headRefOid`, { cwd: ctx.sandbox.cwd });
    if (res.exitCode !== 0) {
      throw new Error(`gh pr view failed: ${res.output}`);
    }
    const state = parsePrReadyState(res.output);

const repo = safeRepoDirName(inputDefault(ctx, 'GITHUB_REPO'));
const repoDir = `${ctx.sandbox.cwd}/${repo}`;

await ctx.sandbox.exec(`git clone ${shellQuote(repoUrl)} ${shellQuote(repoDir)}`);

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

high

The ctx.sandbox.exec call for git clone is executed without checking the exitCode. If the clone fails, the handler will proceed to run the harness with a non-existent or empty repoDir, leading to failures downstream. Check the exitCode and handle or throw an error if it is non-zero.

  const cloneResult = await ctx.sandbox.exec(`git clone ${shellQuote(repoUrl)} ${shellQuote(repoDir)}`);
  if (cloneResult.exitCode !== 0) {
    throw new Error(`Failed to clone repository: ${cloneResult.output}`);
  }

const teams: Array<{ id: string; name: string }> = [];
for (const file of output.split('\n').map((l) => l.trim()).filter(Boolean)) {
try {
const t = JSON.parse(await ctx.files.read(file)) as { id?: string; name?: string };

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

high

The ctx.files.read helper expects a path relative to the VFS mount root, but file here is an absolute path returned by find that includes the root prefix (e.g., /relayfile/linear/teams/team1.json). This will cause ctx.files.read to fail. Strip the root prefix from the path before reading the file.

Suggested change
const t = JSON.parse(await ctx.files.read(file)) as { id?: string; name?: string };
const relativePath = root ? file.replace(root, '') : file;
const t = JSON.parse(await ctx.files.read(relativePath)) as { id?: string; name?: string };

name: a.name,
artist: artist.name,
date: a.release_date,
url: a.external_urls.spotify

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

Accessing a.external_urls.spotify directly is unsafe because external_urls can be undefined if the API response is malformed or missing the field. Use optional chaining to prevent potential runtime crashes.

Suggested change
url: a.external_urls.spotify
url: a.external_urls?.spotify ?? ''

const databaseId = input(ctx, 'NOTION_DATABASE_ID');
if (!databaseId) throw new Error('NOTION_DATABASE_ID is required');

const title = `${pr.owner}/${pr.repo}#${pr.number} hygiene - ${new Date(event.occurredAt).toISOString().slice(0, 10)}`;

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

If event.occurredAt is missing or malformed, new Date(event.occurredAt) will result in an Invalid Date object. Calling .toISOString() on an Invalid Date throws a RangeError and will crash the entire agent handler. Use a fallback or validate the date before calling .toISOString().

  const occurredDate = event.occurredAt ? new Date(event.occurredAt) : new Date();
  const dateStr = Number.isNaN(occurredDate.getTime()) ? new Date().toISOString() : occurredDate.toISOString();
  const title = `${pr.owner}/${pr.repo}#${pr.number} hygiene - ${dateStr.slice(0, 10)}`;

const lines: string[] = [];
lines.push(`# Weekly digest — ${args.week}`);
lines.push('');
lines.push(`Fetched at ${args.fetchedAt.toISOString()}.`);

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

If event.occurredAt is missing or malformed, args.fetchedAt will be an Invalid Date object. Calling .toISOString() on it will throw a RangeError and crash the handler. Ensure the date is valid before calling .toISOString().

Suggested change
lines.push(`Fetched at ${args.fetchedAt.toISOString()}.`);
const fetchedAtStr = Number.isNaN(args.fetchedAt.getTime()) ? new Date().toISOString() : args.fetchedAt.toISOString();
lines.push(`Fetched at ${fetchedAtStr}.`);

@khaliqgant khaliqgant force-pushed the add-creating-cloud-persona-readme-vendor-refs branch from 6a82465 to 7a4bc2a Compare June 9, 2026 09:41
@codeant-ai

codeant-ai Bot commented Jun 9, 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.

@khaliqgant khaliqgant force-pushed the add-creating-cloud-persona-readme-vendor-refs branch from 7a4bc2a to 56779e7 Compare June 9, 2026 09:42
@codeant-ai

codeant-ai Bot commented Jun 9, 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 could not complete review for #73 in AgentWorkforce/skills.
The review harness exited with code 1.
No review was posted; this needs operator attention.

@agent-relay-code

Copy link
Copy Markdown
Contributor

⚠️ pr-reviewer did not push — the PR branch advanced during the review, so fixes were withheld to avoid overwriting newer commits. Re-trigger the review once the branch settles. The notes below are advisory and were not pushed.

pr-reviewer could not complete review for #73 in AgentWorkforce/skills.
The review harness exited with code 1.
No review was posted; this needs operator attention.

@agent-relay-code

Copy link
Copy Markdown
Contributor

pr-reviewer could not complete review for #73 in AgentWorkforce/skills.
The review harness exited with code 1.
No review was posted; this needs operator attention.

@agent-relay-code

Copy link
Copy Markdown
Contributor

⚠️ pr-reviewer did not push — the PR branch advanced during the review, so fixes were withheld to avoid overwriting newer commits. Re-trigger the review once the branch settles. The notes below are advisory and were not pushed.

pr-reviewer could not complete review for #73 in AgentWorkforce/skills.
The review harness exited with code 1.
No review was posted; this needs operator attention.

@agent-relay-code

Copy link
Copy Markdown
Contributor

pr-reviewer could not complete review for #73 in AgentWorkforce/skills.
The review harness exited with code 1.
No review was posted; this needs operator attention.

@codeant-ai

codeant-ai Bot commented Jun 9, 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 040eda4 to this PR. The notes below describe what changed.

pr-reviewer could not complete review for #73 in AgentWorkforce/skills.
The review harness exited with code 1.
No review was posted; this needs operator attention.

@codeant-ai

codeant-ai Bot commented Jun 9, 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 could not complete review for #73 in AgentWorkforce/skills.
The review harness exited with code 1.
No review was posted; this needs operator attention.

1 similar comment
@agent-relay-code

Copy link
Copy Markdown
Contributor

pr-reviewer could not complete review for #73 in AgentWorkforce/skills.
The review harness exited with code 1.
No review was posted; this needs operator attention.

@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.

pr-reviewer could not complete review for #73 in AgentWorkforce/skills.
The review harness exited with code 1.
No review was posted; this needs operator attention.

@codeant-ai

codeant-ai Bot commented Jun 9, 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 could not complete review for #73 in AgentWorkforce/skills.
The review harness exited with code 1.
No review was posted; this needs operator attention.

@agent-relay-code

Copy link
Copy Markdown
Contributor

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

pr-reviewer could not complete review for #73 in AgentWorkforce/skills.
The review harness exited with code 1.
No review was posted; this needs operator attention.

@agent-relay-code

Copy link
Copy Markdown
Contributor

pr-reviewer could not complete review for #73 in AgentWorkforce/skills.
The review harness exited with code 1.
No review was posted; this needs operator attention.

@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.

pr-reviewer could not complete review for #73 in AgentWorkforce/skills.
The review harness exited with code 1.
No review was posted; this needs operator attention.

@agent-relay-code

Copy link
Copy Markdown
Contributor

pr-reviewer could not complete review for #73 in AgentWorkforce/skills.
The review harness exited with code 1.
No review was posted; this needs operator attention.

@codeant-ai

codeant-ai Bot commented Jun 9, 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 be1fa5d to this PR. The notes below describe what changed.

pr-reviewer could not complete review for #73 in AgentWorkforce/skills.
The review harness exited with code 1.
No review was posted; this needs operator attention.

@agent-relay-code

Copy link
Copy Markdown
Contributor

pr-reviewer could not complete review for #73 in AgentWorkforce/skills.
The review harness exited with code 1.
No review was posted; this needs operator attention.

@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.

pr-reviewer could not complete review for #73 in AgentWorkforce/skills.
The review harness exited with code 1.
No review was posted; this needs operator attention.

@agent-relay-code

Copy link
Copy Markdown
Contributor

pr-reviewer could not complete review for #73 in AgentWorkforce/skills.
The review harness exited with code 1.
No review was posted; this needs operator attention.

@agent-relay-code

Copy link
Copy Markdown
Contributor

pr-reviewer could not complete review for #73 in AgentWorkforce/skills.
The review harness exited with code 1.
No review was posted; this needs operator attention.

@codeant-ai

codeant-ai Bot commented Jun 9, 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 7dbe51e to this PR. The notes below describe what changed.

pr-reviewer could not complete review for #73 in AgentWorkforce/skills.
The review harness exited with code 1.
No review was posted; this needs operator attention.

…olidated skill

A Slack trigger mirrors the display-labelled path read-only and never covers the
bare-id writeback path, so a Slack WRITE always needs a scope — a trigger is not
enough. Surfaced by the linear-slack silent-drop bug (2026-06; orphaned draft
recovered from the live sandbox).

- starter persona.json: scope slack to /slack/channels/** instead of "slack": {}
  (the example previously shipped the footgun and contradicted the real review
  agent it models).
- scope warning: rewrite — a Slack trigger does NOT cover a Slack write; explain
  the labelled-mirror vs bare-id path mismatch.
- §1: add the labelled-mirror sub-trap, correct the "trigger or scope" rule to
  carve out Slack, and add the make-delivery-loud rule (empty ts ⇒ throw).

Refs AgentWorkforce/agents#53, AgentWorkforce/cloud#2029.

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

codeant-ai Bot commented Jun 9, 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.

@khaliqgant khaliqgant merged commit 466ef07 into main Jun 9, 2026
2 checks passed
@khaliqgant khaliqgant deleted the add-creating-cloud-persona-readme-vendor-refs branch June 9, 2026 12:20
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