mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-10-21 00:05:49 +02:00
Runtime #15727 is merged. This PR adds the UI. Qualification follows in
#15729.
## Thinking Path
> - Paperclip manages agent work through tasks and governed connections.
> - Chat connections already bind external conversations to those tasks.
> - Speko handles voice and telephony, while the selected Paperclip
agent does the work.
> - A call needs durable session authority, ordered follow-ups, and safe
result delivery.
> - This PR adds the Speko setup and call controls to the existing Apps
and task UI.
> - This PR depends on #15727. The qualification suite follows
separately. Speko stays experimental.
## Linked Issues or Issue Description
**Problem or motivation**
Phone and browser voice conversations cannot use the chat connection
task lifecycle. A separate voice runtime is needed to preserve task
authority, retries, and reply history.
**Proposed solution**
Add company-scoped voice sessions, signed callbacks, durable replies,
inbound intake, and an agent-facing outbound-call tool. Reuse existing
tasks, queues, secrets, and publications.
**Roadmap alignment**
This extends the experimental chat connector entry points under Agent
Chat and Connected Apps. The project owner requested this feature.
Refs #11418 for the original provider catalog proposal. This
implementation uses the newer chat connection infrastructure rather than
an MCP catalog-only integration. Refs #15721 for remote OpenCode
startup.
## What Changed
- Add the Speko Apps catalog entry, provider artwork, and browser SDK.
- Reuse existing agents in setup. Keep the optional Company Phone Agent
in the catalog, with connection instructions available to any assigned
agent.
- Add task voice controls, transcripts, phone callbacks, inbound-line
settings, and call Activity entries.
- Surface retryable connection and incoming-task inventory failures,
preserve active call controls and cached tasks, restore keyboard focus
after recovery, and bound notification polling so a stuck request cannot
hide later results.
- Put Save & exit and Connect Speko in the credential step’s shared
footer.
- Add deterministic production-component Storybook fixtures for setup,
lifecycle, failures, permissions, and phone surfaces.
- Include voice components in the design guide. Stories never request a
real microphone or place calls.
## Verification
- All 27 focused UI/controller regressions, UI typecheck, token gates,
and 28 map/catalog structural tests pass. The shared connection cache
test covers pause/resume invalidation during the 30-second fresh period.
- Storybook builds 157 Speko production-component stories. The complete
prior 156-story set passed all 624 checks on UI source 249cbc616a. After
the final cache repair, all 152 affected page/launcher checks passed
across both themes, 390/1200 widths and reduced motion. Real microphone
access and external provider requests are blocked.
- Source annotations follow the current generated-catalog contract. No
generated catalog or lockfile is included. Three inherited
GitHub-heading tests passed after master reconciliation.
- Latest-head CI and Greptile review must pass before merge. Local
fixture success does not establish provider or spoken-playback
acceptance.
- The separate integrated browser run passed two journeys and failed
browser answer retrieval. Real browser/telephone playback and timing
acceptance remain outstanding. See the dated qualification report and
E01–E16 runbook. Speko stays experimental.
## Risks
- Voice sessions add migrations and provider-dependent lifecycle
behavior. Migrations preserve existing chat and AI transports.
- Callback origins must be reachable HTTPS. Provider keys and signing
secrets remain vaulted.
- Unverified callers receive task-scoped low-trust authority. Caller ID
does not grant private task access.
- Outbound telephony incurs provider charges. Provider acceptance is not
proof that the caller heard an answer.
- Keep the feature behind the existing experimental chat setting until
the real browser, inbound, outbound, and delayed-result acceptance
matrix passes.
## Model Used
OpenAI Codex, GPT-6, with tool use and code execution. The exact serving
model ID and context window are not exposed in this session.
## Checklist
- [x] I have included a thinking path that traces from project context
to this change
- [x] I have specified the model used (with version and capability
details)
- [x] I have checked ROADMAP.md and confirmed this PR does not duplicate
planned core work
- [x] I have searched GitHub for duplicate or related PRs and linked
them above
- [x] I have either (a) linked existing issues with `Fixes: #` / `Closes
#` / `Refs #` OR (b) described the issue in-PR following the relevant
issue template
- [x] I have not referenced internal/instance-local Paperclip issues or
links (only public GitHub `#NNN` / `github.com/paperclipai/paperclip`
URLs)
- [x] My branch name describes the change (e.g. `docs/...`, `fix/...`)
and contains no internal Paperclip ticket id or instance-derived details
- [ ] I have run tests locally and they pass
- [x] I have added or updated tests where applicable
- [x] I have updated relevant documentation to reflect my changes
- [x] I have considered and documented any risks above
- [x] All Paperclip CI gates are green
- [x] Greptile is 5/5 with no open P2s, recommendations, or follow-ups
- [x] I will address all Greptile and reviewer comments before
requesting merge
---------
Co-authored-by: Paperclip <noreply@paperclip.ing>
540 lines
17 KiB
JSON
540 lines
17 KiB
JSON
{
|
|
"schemaVersion": 1,
|
|
"packageName": "@paperclipai/teams-catalog",
|
|
"packageVersion": "0.1.0",
|
|
"generatedAt": "2026-10-08T10:35:56.448Z",
|
|
"teams": [
|
|
{
|
|
"id": "paperclipai:bundled:company-defaults:core-exec-team",
|
|
"key": "paperclipai/bundled/company-defaults/core-exec-team",
|
|
"kind": "bundled",
|
|
"category": "company-defaults",
|
|
"slug": "core-exec-team",
|
|
"name": "Core Exec Team",
|
|
"description": "Default leadership and engineering team for bootstrapping a Paperclip company with a CEO, CTO, QA Engineer, starter project, and a recurring CEO heartbeat review task.",
|
|
"path": "catalog/bundled/company-defaults/core-exec-team",
|
|
"entrypoint": "TEAM.md",
|
|
"schema": "agentcompanies/v1",
|
|
"defaultInstall": true,
|
|
"recommendedForCompanyTypes": [
|
|
"startup",
|
|
"software",
|
|
"generalist"
|
|
],
|
|
"tags": [
|
|
"default",
|
|
"executive",
|
|
"engineering",
|
|
"qa"
|
|
],
|
|
"counts": {
|
|
"agents": 3,
|
|
"projects": 1,
|
|
"tasks": 0,
|
|
"routines": 1,
|
|
"localSkills": 0,
|
|
"catalogSkills": 4,
|
|
"externalSkillSources": 0
|
|
},
|
|
"rootAgentSlugs": [
|
|
"ceo"
|
|
],
|
|
"agentSlugs": [
|
|
"ceo",
|
|
"cto",
|
|
"qa"
|
|
],
|
|
"projectSlugs": [
|
|
"first-project"
|
|
],
|
|
"requiredSkills": [
|
|
{
|
|
"type": "catalog",
|
|
"ref": "github-pr-workflow",
|
|
"agentSlugs": [
|
|
"cto"
|
|
],
|
|
"resolved": true,
|
|
"catalogSkillId": "paperclipai:bundled:software-development:github-pr-workflow",
|
|
"catalogSkillKey": "paperclipai/bundled/software-development/github-pr-workflow"
|
|
},
|
|
{
|
|
"type": "catalog",
|
|
"ref": "issue-triage",
|
|
"agentSlugs": [
|
|
"ceo"
|
|
],
|
|
"resolved": true,
|
|
"catalogSkillId": "paperclipai:bundled:paperclip-operations:issue-triage",
|
|
"catalogSkillKey": "paperclipai/bundled/paperclip-operations/issue-triage"
|
|
},
|
|
{
|
|
"type": "catalog",
|
|
"ref": "qa-acceptance",
|
|
"agentSlugs": [
|
|
"qa"
|
|
],
|
|
"resolved": true,
|
|
"catalogSkillId": "paperclipai:bundled:quality:qa-acceptance",
|
|
"catalogSkillKey": "paperclipai/bundled/quality/qa-acceptance"
|
|
},
|
|
{
|
|
"type": "catalog",
|
|
"ref": "task-planning",
|
|
"agentSlugs": [
|
|
"ceo",
|
|
"cto"
|
|
],
|
|
"resolved": true,
|
|
"catalogSkillId": "paperclipai:bundled:paperclip-operations:task-planning",
|
|
"catalogSkillKey": "paperclipai/bundled/paperclip-operations/task-planning"
|
|
}
|
|
],
|
|
"envInputs": [],
|
|
"sourceRefs": [],
|
|
"files": [
|
|
{
|
|
"path": "TEAM.md",
|
|
"kind": "team",
|
|
"sizeBytes": 2014,
|
|
"sha256": "e0c38e9af1a5dd1888fb81a72feba75a9ab1be4c78d8ceb658e2e5cd621c5096"
|
|
},
|
|
{
|
|
"path": "agents/ceo/AGENTS.md",
|
|
"kind": "agent",
|
|
"sizeBytes": 263,
|
|
"sha256": "75848c6f794646a93e23bc73b80d31ef0eb8b83c105423eb98ea29e7685d2fd0"
|
|
},
|
|
{
|
|
"path": "agents/cto/AGENTS.md",
|
|
"kind": "agent",
|
|
"sizeBytes": 279,
|
|
"sha256": "d33bfdecdf2edcedde25599c72c383445365c595430109469a3919bf9cb12a3d"
|
|
},
|
|
{
|
|
"path": "agents/qa/AGENTS.md",
|
|
"kind": "agent",
|
|
"sizeBytes": 215,
|
|
"sha256": "8b7fbdd93c0ecebddc1c87fb87d201340bd5f90297015da6cacd1681e7be70b8"
|
|
},
|
|
{
|
|
"path": "projects/first-project/PROJECT.md",
|
|
"kind": "project",
|
|
"sizeBytes": 364,
|
|
"sha256": "1f457ae956da52ff83adc1cf63a3fb84337a4afb25bd43f0d123902d75e871cc"
|
|
},
|
|
{
|
|
"path": "projects/first-project/tasks/first-heartbeat/TASK.md",
|
|
"kind": "task",
|
|
"sizeBytes": 292,
|
|
"sha256": "bdc979cafa43fc9b8f0d6f0e4120c01cecfb899082781a5da88e26fa262f18e4"
|
|
}
|
|
],
|
|
"trustLevel": "markdown_only",
|
|
"compatibility": "compatible",
|
|
"contentHash": "sha256:9d0416ebc0a81585dc51b73efb25decba9e1e3f3741940fc9fca74f3238f344d"
|
|
},
|
|
{
|
|
"id": "paperclipai:bundled:product:product-design",
|
|
"key": "paperclipai/bundled/product/product-design",
|
|
"kind": "bundled",
|
|
"category": "product",
|
|
"slug": "product-design",
|
|
"name": "Product Design",
|
|
"description": "Bundled product design team with a Principal Product Designer who owns wireframes, design critiques, and UX quality reviews for a product company.",
|
|
"path": "catalog/bundled/product/product-design",
|
|
"entrypoint": "TEAM.md",
|
|
"schema": "agentcompanies/v1",
|
|
"defaultInstall": false,
|
|
"recommendedForCompanyTypes": [
|
|
"software",
|
|
"product",
|
|
"design"
|
|
],
|
|
"tags": [
|
|
"design",
|
|
"ux",
|
|
"product"
|
|
],
|
|
"counts": {
|
|
"agents": 1,
|
|
"projects": 1,
|
|
"tasks": 0,
|
|
"routines": 1,
|
|
"localSkills": 0,
|
|
"catalogSkills": 3,
|
|
"externalSkillSources": 0
|
|
},
|
|
"rootAgentSlugs": [
|
|
"ux-designer"
|
|
],
|
|
"agentSlugs": [
|
|
"ux-designer"
|
|
],
|
|
"projectSlugs": [
|
|
"product-design"
|
|
],
|
|
"requiredSkills": [
|
|
{
|
|
"type": "catalog",
|
|
"ref": "design-critique",
|
|
"agentSlugs": [
|
|
"ux-designer"
|
|
],
|
|
"resolved": true,
|
|
"catalogSkillId": "paperclipai:optional:product:design-critique",
|
|
"catalogSkillKey": "paperclipai/optional/product/design-critique"
|
|
},
|
|
{
|
|
"type": "catalog",
|
|
"ref": "task-planning",
|
|
"agentSlugs": [
|
|
"ux-designer"
|
|
],
|
|
"resolved": true,
|
|
"catalogSkillId": "paperclipai:bundled:paperclip-operations:task-planning",
|
|
"catalogSkillKey": "paperclipai/bundled/paperclip-operations/task-planning"
|
|
},
|
|
{
|
|
"type": "catalog",
|
|
"ref": "wireframe",
|
|
"agentSlugs": [
|
|
"ux-designer"
|
|
],
|
|
"resolved": true,
|
|
"catalogSkillId": "paperclipai:bundled:product:wireframe",
|
|
"catalogSkillKey": "paperclipai/bundled/product/wireframe"
|
|
}
|
|
],
|
|
"envInputs": [],
|
|
"sourceRefs": [],
|
|
"files": [
|
|
{
|
|
"path": "TEAM.md",
|
|
"kind": "team",
|
|
"sizeBytes": 2025,
|
|
"sha256": "f950f4f77a26afa458ca0696994b51353a6bcfac81471fdc00c05f63950fcac5"
|
|
},
|
|
{
|
|
"path": "agents/ux-designer/AGENTS.md",
|
|
"kind": "agent",
|
|
"sizeBytes": 306,
|
|
"sha256": "301f2c7ed92bdd98036c06530588c77d74c3a3c6a8b9c724a3d35fee1142af6f"
|
|
},
|
|
{
|
|
"path": "projects/product-design/PROJECT.md",
|
|
"kind": "project",
|
|
"sizeBytes": 353,
|
|
"sha256": "4afe346bc5d5958216542d60a06be12983e1e018960cf2709c85c7d578f28420"
|
|
},
|
|
{
|
|
"path": "projects/product-design/tasks/weekly-design-review/TASK.md",
|
|
"kind": "task",
|
|
"sizeBytes": 313,
|
|
"sha256": "d255115eccc5c8b9f576c34fc2fb46a1cbb86ab36a56b980bdab35a952482d8a"
|
|
}
|
|
],
|
|
"trustLevel": "markdown_only",
|
|
"compatibility": "compatible",
|
|
"contentHash": "sha256:67b041c3adc20583f844fd2415e1c67859a8342b59e46ec32b038b70b7af0108"
|
|
},
|
|
{
|
|
"id": "paperclipai:bundled:software-development:product-engineering",
|
|
"key": "paperclipai/bundled/software-development/product-engineering",
|
|
"kind": "bundled",
|
|
"category": "software-development",
|
|
"slug": "product-engineering",
|
|
"name": "Product Engineering",
|
|
"description": "Bundled engineering team that pairs a CTO with a senior coder and a QA engineer to deliver, review, and verify product changes.",
|
|
"path": "catalog/bundled/software-development/product-engineering",
|
|
"entrypoint": "TEAM.md",
|
|
"schema": "agentcompanies/v1",
|
|
"defaultInstall": false,
|
|
"recommendedForCompanyTypes": [
|
|
"software",
|
|
"startup",
|
|
"product"
|
|
],
|
|
"tags": [
|
|
"engineering",
|
|
"delivery",
|
|
"qa",
|
|
"code-review"
|
|
],
|
|
"counts": {
|
|
"agents": 3,
|
|
"projects": 1,
|
|
"tasks": 0,
|
|
"routines": 1,
|
|
"localSkills": 0,
|
|
"catalogSkills": 4,
|
|
"externalSkillSources": 0
|
|
},
|
|
"rootAgentSlugs": [
|
|
"cto"
|
|
],
|
|
"agentSlugs": [
|
|
"cto",
|
|
"qa",
|
|
"senior-coder"
|
|
],
|
|
"projectSlugs": [
|
|
"product-engineering"
|
|
],
|
|
"requiredSkills": [
|
|
{
|
|
"type": "catalog",
|
|
"ref": "doc-maintenance",
|
|
"agentSlugs": [
|
|
"cto",
|
|
"senior-coder"
|
|
],
|
|
"resolved": true,
|
|
"catalogSkillId": "paperclipai:bundled:docs:doc-maintenance",
|
|
"catalogSkillKey": "paperclipai/bundled/docs/doc-maintenance"
|
|
},
|
|
{
|
|
"type": "catalog",
|
|
"ref": "github-pr-workflow",
|
|
"agentSlugs": [
|
|
"cto",
|
|
"senior-coder"
|
|
],
|
|
"resolved": true,
|
|
"catalogSkillId": "paperclipai:bundled:software-development:github-pr-workflow",
|
|
"catalogSkillKey": "paperclipai/bundled/software-development/github-pr-workflow"
|
|
},
|
|
{
|
|
"type": "catalog",
|
|
"ref": "qa-acceptance",
|
|
"agentSlugs": [
|
|
"qa"
|
|
],
|
|
"resolved": true,
|
|
"catalogSkillId": "paperclipai:bundled:quality:qa-acceptance",
|
|
"catalogSkillKey": "paperclipai/bundled/quality/qa-acceptance"
|
|
},
|
|
{
|
|
"type": "catalog",
|
|
"ref": "task-planning",
|
|
"agentSlugs": [
|
|
"cto"
|
|
],
|
|
"resolved": true,
|
|
"catalogSkillId": "paperclipai:bundled:paperclip-operations:task-planning",
|
|
"catalogSkillKey": "paperclipai/bundled/paperclip-operations/task-planning"
|
|
}
|
|
],
|
|
"envInputs": [],
|
|
"sourceRefs": [],
|
|
"files": [
|
|
{
|
|
"path": "TEAM.md",
|
|
"kind": "team",
|
|
"sizeBytes": 2583,
|
|
"sha256": "7204eeef78a48714dd3f82b82e171a4039adc6325e91a6bdf51a442105ee33b0"
|
|
},
|
|
{
|
|
"path": ".paperclip.yaml",
|
|
"kind": "extension",
|
|
"sizeBytes": 81,
|
|
"sha256": "54babf05ba130ec54a143abf01581d99c0ac2936fd0d929bf0e0edd00e29d861"
|
|
},
|
|
{
|
|
"path": "agents/cto/AGENTS.md",
|
|
"kind": "agent",
|
|
"sizeBytes": 331,
|
|
"sha256": "28849cb94cb506c4437fa4f9fa19dccb3e29b16175a9b99204a006dac721da48"
|
|
},
|
|
{
|
|
"path": "agents/qa/AGENTS.md",
|
|
"kind": "agent",
|
|
"sizeBytes": 247,
|
|
"sha256": "577f585f6db5271cb7335861debe91fc3201fba9e1565e32611e957ddfab8e05"
|
|
},
|
|
{
|
|
"path": "agents/senior-coder/AGENTS.md",
|
|
"kind": "agent",
|
|
"sizeBytes": 292,
|
|
"sha256": "e03e0eef79adc04b4ee558ac920bf2ef0581e9494510b7a12d5f1aea70858f18"
|
|
},
|
|
{
|
|
"path": "projects/product-engineering/PROJECT.md",
|
|
"kind": "project",
|
|
"sizeBytes": 358,
|
|
"sha256": "225d01c5b5b77f5d4dafedc083899c9368c9b079db1d3b7b67cfebd4677fc527"
|
|
},
|
|
{
|
|
"path": "projects/product-engineering/tasks/weekly-engineering-sync/TASK.md",
|
|
"kind": "task",
|
|
"sizeBytes": 322,
|
|
"sha256": "6acf3ed2da3dfa48de163810b4bc9d385dad537fd34037ca881eec713986a2a8"
|
|
}
|
|
],
|
|
"trustLevel": "assets",
|
|
"compatibility": "compatible",
|
|
"contentHash": "sha256:b9076b17a551b704a97df2e0204cefb83edfda4d36e909889071bb02d251e5ea"
|
|
},
|
|
{
|
|
"id": "paperclipai:optional:communications:speko-company-phone-agent",
|
|
"key": "paperclipai/optional/communications/speko-company-phone-agent",
|
|
"kind": "optional",
|
|
"category": "communications",
|
|
"slug": "speko-company-phone-agent",
|
|
"name": "Speko Company Phone Agent",
|
|
"description": "Optional company voice receptionist for greeting, intake, clarification, delegation, and concise task follow-up through Speko.",
|
|
"path": "catalog/optional/communications/speko-company-phone-agent",
|
|
"entrypoint": "TEAM.md",
|
|
"schema": "agentcompanies/v1",
|
|
"defaultInstall": false,
|
|
"recommendedForCompanyTypes": [
|
|
"agency",
|
|
"services",
|
|
"software"
|
|
],
|
|
"tags": [
|
|
"speko",
|
|
"voice",
|
|
"phone",
|
|
"intake"
|
|
],
|
|
"counts": {
|
|
"agents": 1,
|
|
"projects": 0,
|
|
"tasks": 0,
|
|
"routines": 0,
|
|
"localSkills": 0,
|
|
"catalogSkills": 0,
|
|
"externalSkillSources": 0
|
|
},
|
|
"rootAgentSlugs": [
|
|
"speko-company-phone-agent"
|
|
],
|
|
"agentSlugs": [
|
|
"speko-company-phone-agent"
|
|
],
|
|
"projectSlugs": [],
|
|
"requiredSkills": [],
|
|
"envInputs": [],
|
|
"sourceRefs": [],
|
|
"files": [
|
|
{
|
|
"path": "TEAM.md",
|
|
"kind": "team",
|
|
"sizeBytes": 1097,
|
|
"sha256": "04c89ffaf7d8d778b1e18bae7cbea3c5740c359a61c42a139759eaad443b7f76"
|
|
},
|
|
{
|
|
"path": "agents/speko-company-phone-agent/AGENTS.md",
|
|
"kind": "agent",
|
|
"sizeBytes": 3199,
|
|
"sha256": "922d60cfae8a469876390b3434a513f0b3eff09c8263b51c3f222d388417ac1d"
|
|
},
|
|
{
|
|
"path": "LICENSE",
|
|
"kind": "other",
|
|
"sizeBytes": 1069,
|
|
"sha256": "7f8a27f0979bded50e240caa8c8c29f3088ddf87032cb83e5a9732bff91d18b4"
|
|
},
|
|
{
|
|
"path": "README.md",
|
|
"kind": "readme",
|
|
"sizeBytes": 1417,
|
|
"sha256": "445c4b7ec5a201b73123aba1ce5dbb5a52352ed488364eed62a041c30656c7d7"
|
|
}
|
|
],
|
|
"trustLevel": "assets",
|
|
"compatibility": "compatible",
|
|
"contentHash": "sha256:e723a036948dcb292382fbcb116c68500c2247b004d0a8d8ef818b6725f91215"
|
|
},
|
|
{
|
|
"id": "paperclipai:optional:content:content-machine",
|
|
"key": "paperclipai/optional/content/content-machine",
|
|
"kind": "optional",
|
|
"category": "content",
|
|
"slug": "content-machine",
|
|
"name": "Content Machine",
|
|
"description": "Optional content operations team with a lead agent, a recurring review task, and a vendored local content planning skill.",
|
|
"path": "catalog/optional/content/content-machine",
|
|
"entrypoint": "TEAM.md",
|
|
"schema": "agentcompanies/v1",
|
|
"defaultInstall": false,
|
|
"recommendedForCompanyTypes": [
|
|
"agency",
|
|
"marketing"
|
|
],
|
|
"tags": [
|
|
"content",
|
|
"marketing",
|
|
"routines"
|
|
],
|
|
"counts": {
|
|
"agents": 1,
|
|
"projects": 1,
|
|
"tasks": 0,
|
|
"routines": 1,
|
|
"localSkills": 1,
|
|
"catalogSkills": 0,
|
|
"externalSkillSources": 0
|
|
},
|
|
"rootAgentSlugs": [
|
|
"content-lead"
|
|
],
|
|
"agentSlugs": [
|
|
"content-lead"
|
|
],
|
|
"projectSlugs": [
|
|
"content-operations"
|
|
],
|
|
"requiredSkills": [
|
|
{
|
|
"type": "local",
|
|
"ref": "content-calendar",
|
|
"agentSlugs": [
|
|
"content-lead"
|
|
],
|
|
"resolved": true,
|
|
"localPath": "skills/content-calendar/SKILL.md"
|
|
}
|
|
],
|
|
"envInputs": [],
|
|
"sourceRefs": [],
|
|
"files": [
|
|
{
|
|
"path": "TEAM.md",
|
|
"kind": "team",
|
|
"sizeBytes": 1032,
|
|
"sha256": "f7c272c8b0c183fc840d49eb4851b7cdd1a30a5aa8d6415d215110f3238f6f13"
|
|
},
|
|
{
|
|
"path": "agents/content-lead/AGENTS.md",
|
|
"kind": "agent",
|
|
"sizeBytes": 251,
|
|
"sha256": "6fc2071ff463b6981780d5b40b2c0784cb119900062f8dc40ed372e7b8415bf7"
|
|
},
|
|
{
|
|
"path": "projects/content-operations/PROJECT.md",
|
|
"kind": "project",
|
|
"sizeBytes": 338,
|
|
"sha256": "1471f61cb0b3ffbb9c639a99d2d370f08217a0c63f97b3e24dbbd47861110206"
|
|
},
|
|
{
|
|
"path": "projects/content-operations/tasks/weekly-content-review/TASK.md",
|
|
"kind": "task",
|
|
"sizeBytes": 236,
|
|
"sha256": "3777de716334f2c3f24176f0fe121584ce9c53a7f59e1fca942a2f57995cef77"
|
|
},
|
|
{
|
|
"path": "skills/content-calendar/SKILL.md",
|
|
"kind": "skill",
|
|
"sizeBytes": 340,
|
|
"sha256": "aa62a332fc3149d6c0d58ca589c6b3910a373d542f16f749ec68ef2f3d7f29e9"
|
|
}
|
|
],
|
|
"trustLevel": "markdown_only",
|
|
"compatibility": "compatible",
|
|
"contentHash": "sha256:06822cec5f2b6910cb37ba0ebd5e04ed5c7e34f77225564ddddc2470779cdaa6"
|
|
}
|
|
]
|
|
}
|