Skip to content
Back to skills

Cocobloom

ASecurity

CocoBloom crystallization — converts a successful ship execution trace into a reusable skill file. Requires recent successful $ship. Invoked via $bloom crystallize.

  • 724 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added June 5, 2026
ai-agentsgogit

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned June 5, 2026

npx -y skills add Snowflake-Labs/cocoplus --skill cocobloom --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Cocobloom?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Cocobloom
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/snowflake-labs-cocobloom/badge)](https://www.skillsdirectory.com/skills/snowflake-labs-cocobloom)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: bloom-crystallize
description: CocoBloom crystallization — converts a successful ship execution trace into a reusable skill file. Requires recent successful $ship. Invoked via $bloom crystallize.
version: "1.0.0"
author: CocoPlus
tags:
  - cocobloom
  - crystallization
  - skill-promotion
user-invocable: true
blocking: true
---

## Objective

You are executing the CocoBloom crystallization pathway. Your task is to extract a reusable skill from a recently completed and shipped execution trace.

Before proceeding, verify that `.cocoplus/` exists. If not, output: "CocoPlus is not initialized. Run `$pod init` first." Then stop.

## Step 1 — Verify Recent Successful Ship

Read `.cocoplus/lifecycle/meta.json`. Check that:
- `current_phase` is `"ship"` and `ship_completed_at` exists, OR
- The most recent phase entry shows a successful ship within the last 7 days

If no recent successful `$ship` found, output: "CocoBloom crystallization requires a recent successful `$ship`. Complete the lifecycle through the Ship phase before crystallizing." Then stop.

## Step 2 — Read Execution Trace

Read `.cocoplus/lifecycle/deployment.md` and the most recent flow stage outputs from `.cocoplus/flow.json` runtime state. Collect:
- What was built (deliverables)
- Which patterns were applied
- Key decisions made
- Commands and sequences that worked well
- Any non-obvious techniques used

## Step 3 — Spawn Trace Reader (Haiku)

Pass the execution trace to a Haiku sub-agent with this mandate:

"Read the execution trace and identify the most reusable pattern. A reusable pattern is:
1. A sequence of steps that would apply to similar future tasks
2. Not specific to this project's data (generalizable with parameters)
3. Meaningful enough that having it as a skill would save 10+ minutes of re-derivation

Output:
- Pattern name (kebab-case, ≤5 words)
- What problem it solves (1 sentence)
- The generalized step sequence (numbered)
- Parameters that would need to be filled in for a new project
- What makes it non-obvious (why is this worth preserving?)

If no generalizable pattern exists, output: NO_CRYSTALLIZABLE_PATTERN"

If the sub-agent outputs NO_CRYSTALLIZABLE_PATTERN, tell the developer: "No generalizable pattern found in this execution trace. Crystallization requires a pattern that would apply to future projects." Then stop.

## Step 4 — Spawn Pattern Abstractor (Sonnet)

Pass the trace reader output to a Sonnet sub-agent with this mandate:

"Transform the identified pattern into a properly formatted CocoPlus skill file. The skill must:
1. Follow the standard SKILL.md frontmatter format (name, description, version, author, tags)
2. Have a clear objective statement
3. List steps as numbered actions with specific file paths
4. Include an Anti-Rationalization table
5. Include Exit Criteria
6. Use $<parameter> syntax for project-specific values that need to be filled in
7. Be ~50-100 lines — specific enough to be useful, general enough to apply elsewhere

Output the complete skill file content."

## Step 5 — Present Draft for Developer Review

Show the proposed skill:

```
CocoBloom Crystallization — Draft Skill

Name: <slug>
Description: <description>

[skill content preview]

Accept this skill? Type ACCEPT to write, REVISE to provide feedback, or DISCARD to cancel.
```

Wait for developer input.

If REVISE: collect feedback and re-run Step 4 with the feedback as additional constraints.
If DISCARD: output "Crystallization cancelled." and stop.

## Step 6 — Write Skill File

Only after developer ACCEPT, write the skill to `.cortex/skills/crystallized/<slug>.skill.md` with `source: crystallized` in frontmatter metadata.

Create `.cortex/skills/crystallized/` directory if it does not exist.

## Step 7 — Commit

Create git commit: `feat(skills): crystallize <slug> skill from execution trace`

## Step 8 — Output Confirmation

```
CocoBloom: skill crystallized.
  File: .cortex/skills/crystallized/<slug>.skill.md
  Source: crystallized from <deployment.md date>
  Invoke with: $<slug>

The skill is a project artifact — committed to git and available for future sessions.
```

## Anti-Rationalization Table

| Shortcut / Temptation | Why It Fails |
|-----------------------|--------------|
| Skip the ship verification | Crystallizing from an incomplete execution produces a skill that reflects partial work |
| Write the skill without developer ACCEPT | Developer must review — the abstractor may over-generalize or under-generalize |
| Skip the trace reader and go directly to abstractor | Trace reader identifies what is worth crystallizing — without it, the abstractor works on everything |

## Exit Criteria

- Skill file written only after developer ACCEPT
- `source: crystallized` metadata present in frontmatter
- Git commit created
- Skill is general enough to apply to future projects (not hardcoded to current project data)

Files in this skill

  • bloom-crystallize.skill.md4.8 KB
  • bloom-skip.skill.md1.3 KB
  • bloom.skill.md6.4 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…