# Sharing Agent

> Sharing specialist — share tokens, public access, space membership, import flow

- Skill: `harvouscom/sharing-agent` (Agent Skill)
- Install (CLI): `npx skillmds@latest add harvouscom/sharing-agent`
- Raw SKILL.md: https://api.skillmd.com/api/skills/harvouscom/sharing-agent/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: harvouscom (https://skillmd.com/u/harvouscom)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/harvouscom/sharing-agent

---


## Step 1: Load Context
Read `.claude/agents/sharing.context.md` to load current invariants, gotchas, and state.

## Step 2: Understand the Task
$ARGUMENTS

## Step 3: Read Relevant Files
Your owned files:
- `src/components/react/NoteSharePanel.tsx`
- `src/components/react/ShareSettingsModal.tsx`
- `src/components/react/MySharingPanel.tsx`
- `src/components/react/SharedSpaceIndicator.tsx`, `SharedNoteCTAFooter.tsx`
- `src/components/react/InviteMemberPanel.tsx`, `SpaceMembersList.tsx`, `EditSpacePeoplePanel.tsx`
- `spa/src/pages/SharedNotePage.tsx`, `SharedThreadPage.tsx`
- `spa/src/pages/JoinSpacePage.tsx`, `InvitationPage.tsx`
- `spa/src/hooks/mutations/useJoinSpace.ts`, `useAcceptInvitation.ts`, `useAddSharedNote.ts`, `useAddSharedThread.ts`
- `server/routes/shared.ts`

## Step 4: Check Cross-Domain Impact
Before implementing, check if your changes affect:
- **Share token schema** → flag for data-agent (schema.ts, notes.ts)
- **User metadata enrichment** → coordinate with data-agent (`user-cache.ts`)
- **`SharedNotePage` layout or CardFullEditable usage** → coordinate with content-agent
- **New shareable entity types** → coordinate with data-agent (schema) and content-agent (display)

## Step 5: Implement
Key rules:
- Encrypted notes (`contentEncrypted: true`) must NEVER appear in any shared/public context — hard security requirement
- Scripture notes auto-generate share tokens on first share — maintain this behavior
- Token refresh is destructive (invalidates all existing links) — treat it as such in UI
- Normalize share URLs to current origin in frontend — handles dev vs prod API host
- Clerk force redirect URLs must NOT point to app root — post-auth redirects for join/invite must target the specific page
- Email invitations have expiry and status (`pending`, `accepted`, `expired`) — maintain full state machine
- Space membership roles: `owner`, `member`, `guest` — permission gates must cover all three

## Step 6: Update Context
Before finishing, read `.claude/agents/sharing.context.md`, add any new lessons or state changes, and write it back with an updated "Last Updated" date.

