Capture Conversation
outline/outline
Save the current conversation, a decision, or a set of notes as a document in an Outline collection; use when the user wants to keep what was discussed in their knowledge base.
Outbox Pattern knowledge base. An agent skill from dykyi-roman/awesome-claude-code.
$ npx skills add dykyi-roman/awesome-claude-code --skill outbox-pattern-knowledge -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install dykyi-roman/awesome-claude-code outbox-pattern-knowledge --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/dykyi-roman/awesome-claude-code.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/outbox-pattern-knowledge .claude/skills/outbox-pattern-knowledge && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "outbox-pattern-knowledge" agent skill from https://github.com/dykyi-roman/awesome-claude-code/tree/master/skills/outbox-pattern-knowledge into .claude/skills/outbox-pattern-knowledge/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "outbox-pattern-knowledge", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/dykyi-roman/awesome-claude-code/tree/master/skills/outbox-pattern-knowledgeType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add dykyi-roman/awesome-claude-code --skill outbox-pattern-knowledge -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install dykyi-roman/awesome-claude-code outbox-pattern-knowledge --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dykyi-roman/awesome-claude-code.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/outbox-pattern-knowledge .agents/skills/outbox-pattern-knowledge && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "outbox-pattern-knowledge" agent skill from https://github.com/dykyi-roman/awesome-claude-code/tree/master/skills/outbox-pattern-knowledge into .agents/skills/outbox-pattern-knowledge/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "outbox-pattern-knowledge", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add dykyi-roman/awesome-claude-code --skill outbox-pattern-knowledge -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install dykyi-roman/awesome-claude-code outbox-pattern-knowledge --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dykyi-roman/awesome-claude-code.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/outbox-pattern-knowledge .cursor/skills/outbox-pattern-knowledge && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "outbox-pattern-knowledge" agent skill from https://github.com/dykyi-roman/awesome-claude-code/tree/master/skills/outbox-pattern-knowledge into .cursor/skills/outbox-pattern-knowledge/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "outbox-pattern-knowledge", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/dykyi-roman/awesome-claude-code.git --path skills/outbox-pattern-knowledge--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add dykyi-roman/awesome-claude-code --skill outbox-pattern-knowledge -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install dykyi-roman/awesome-claude-code outbox-pattern-knowledge --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dykyi-roman/awesome-claude-code.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/outbox-pattern-knowledge .gemini/skills/outbox-pattern-knowledge && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "outbox-pattern-knowledge" agent skill from https://github.com/dykyi-roman/awesome-claude-code/tree/master/skills/outbox-pattern-knowledge into .gemini/skills/outbox-pattern-knowledge/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "outbox-pattern-knowledge", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install dykyi-roman/awesome-claude-code outbox-pattern-knowledgeInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add dykyi-roman/awesome-claude-code --skill outbox-pattern-knowledge -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/dykyi-roman/awesome-claude-code.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/outbox-pattern-knowledge .github/skills/outbox-pattern-knowledge && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "outbox-pattern-knowledge" agent skill from https://github.com/dykyi-roman/awesome-claude-code/tree/master/skills/outbox-pattern-knowledge into .github/skills/outbox-pattern-knowledge/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "outbox-pattern-knowledge", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add dykyi-roman/awesome-claude-code --skill outbox-pattern-knowledge -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install dykyi-roman/awesome-claude-code outbox-pattern-knowledge --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dykyi-roman/awesome-claude-code.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/outbox-pattern-knowledge .opencode/skills/outbox-pattern-knowledge && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "outbox-pattern-knowledge" agent skill from https://github.com/dykyi-roman/awesome-claude-code/tree/master/skills/outbox-pattern-knowledge into .opencode/skills/outbox-pattern-knowledge/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "outbox-pattern-knowledge", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
outbox-pattern-knowledgeOutbox Pattern knowledge base. An agent skill from dykyi-roman/awesome-claude-code.
Outbox Pattern Knowledge is an agent skill from dykyi-roman/awesome-claude-code. Outbox Pattern knowledge base. Provides patterns, antipatterns, and PHP-specific guidelines for transactional outbox, polling publisher, and reliable messaging audits.
Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including reference files and assets (for example `assets/report-template.md`, `references/antipatterns.md` and `references/outbox-patterns.md`).
It sits in Knowledge Management, covering Knowledge bases. It works with PHP. The repository describes itself as: PHP Architecture Toolkit for Claude Code (DDD, CQRS, Event Sourcing, Hexagonal, Clean Architecture, SOLID, GRASP, PSR, Design Patterns, Testing, Documentation, Code Review). The licence is MIT.
Read from SKILL.md and the folder at commit 7e1fea8. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are php, bash and sql).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Outbox Pattern Knowledge loads about 2.9k tokens when it runs, and up to ~11k if it reads all its reference files. Until then it costs about 48 tokens; SKILL.md has 292 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from dykyi-roman/awesome-claude-code at commit 7e1fea8, republished under its MIT licence (© dykyi-roman). 292 words, ~2,924 tokens.
.claude/skills/outbox-pattern-knowledge/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.Quick reference for Transactional Outbox pattern and PHP implementation guidelines.
┌─────────────────────────────────────────────────────────────────────────┐
│ TRANSACTIONAL OUTBOX PATTERN │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ SINGLE TRANSACTION │ │
│ │ ┌──────────┐ ┌───────────────┐ ┌────────────────┐ │ │
│ │ │ Business │─────▶│ Domain Table │ │ Outbox Table │ │ │
│ │ │ Logic │ │ (orders) │ │ (outbox_msgs) │ │ │
│ │ └──────────┘ └───────────────┘ └────────────────┘ │ │
│ │ │ ▲ ▲ │ │
│ │ └───────────────────┴───────────────────────┘ │ │
│ │ COMMIT/ROLLBACK │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────┐ ┌──────────────────────────┐ │
│ │ Message Relay │───────────────────▶│ Message Broker │ │
│ │ (Polling/CDC) │ publish events │ (RabbitMQ/Kafka) │ │
│ └──────────────────┘ └──────────────────────────┘ │
│ │ │
│ ▼ │
│ Marks messages as processed │
│ │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ Publishing Strategies: │
│ • Polling Publisher - Periodic poll for unprocessed messages │
│ • Transaction Log Tailing (CDC) - Debezium, Maxwell │
│ • Event Sourcing + Projections - Events = Outbox │
│ │
│ Guarantees: │
│ • At-least-once delivery │
│ • No message loss on service crash │
│ • Transactional consistency between data and events │
│ │
└─────────────────────────────────────────────────────────────────────────┘| Concept | Description |
|---|---|
| Outbox Table | Database table storing pending messages within same transaction |
| Message Relay | Background process that publishes messages from outbox |
| Polling Publisher | Periodically queries outbox for unpublished messages |
| CDC (Change Data Capture) | Streams database changes to message broker |
| Idempotency Key | Unique identifier for message deduplication |
| At-least-once | Messages delivered at least once (consumers must be idempotent) |
<?php
declare(strict_types=1);
namespace Domain\Shared\Outbox;
final readonly class OutboxMessage
{
public function __construct(
public string $id,
public string $aggregateType,
public string $aggregateId,
public string $eventType,
public string $payload,
public \DateTimeImmutable $createdAt,
public ?string $correlationId = null,
public ?\DateTimeImmutable $processedAt = null,
public int $retryCount = 0
) {}
public function isProcessed(): bool
{
return $this->processedAt !== null;
}
public function withProcessed(\DateTimeImmutable $at): self
{
return new self(
$this->id,
$this->aggregateType,
$this->aggregateId,
$this->eventType,
$this->payload,
$this->createdAt,
$this->correlationId,
$at,
$this->retryCount
);
}
public function withRetry(): self
{
return new self(
$this->id,
$this->aggregateType,
$this->aggregateId,
$this->eventType,
$this->payload,
$this->createdAt,
$this->correlationId,
$this->processedAt,
$this->retryCount + 1
);
}
}<?php
declare(strict_types=1);
namespace Domain\Shared\Outbox;
interface OutboxRepositoryInterface
{
public function save(OutboxMessage $message): void;
/** @param array<OutboxMessage> $messages */
public function saveAll(array $messages): void;
/** @return array<OutboxMessage> */
public function findUnprocessed(int $limit = 100): array;
public function markAsProcessed(string $id, \DateTimeImmutable $at): void;
public function incrementRetry(string $id): void;
public function delete(string $id): void;
}<?php
declare(strict_types=1);
namespace Application\Shared\Outbox;
use Domain\Shared\Outbox\OutboxMessage;
use Domain\Shared\Outbox\OutboxRepositoryInterface;
final readonly class OutboxPublisher
{
public function __construct(
private OutboxRepositoryInterface $outbox,
private EventPublisherInterface $publisher,
private int $maxRetries = 3
) {}
public function processOutbox(int $batchSize = 100): int
{
$messages = $this->outbox->findUnprocessed($batchSize);
$processed = 0;
foreach ($messages as $message) {
try {
$this->publisher->publish(
$message->eventType,
$message->payload,
$message->correlationId
);
$this->outbox->markAsProcessed(
$message->id,
new \DateTimeImmutable()
);
$processed++;
} catch (\Throwable $e) {
$this->handleFailure($message, $e);
}
}
return $processed;
}
private function handleFailure(OutboxMessage $message, \Throwable $e): void
{
if ($message->retryCount >= $this->maxRetries) {
// Move to dead letter / log critical
$this->outbox->delete($message->id);
return;
}
$this->outbox->incrementRetry($message->id);
}
}<?php
declare(strict_types=1);
namespace Application\Order\UseCase;
use Domain\Order\OrderRepositoryInterface;
use Domain\Shared\Outbox\OutboxRepositoryInterface;
use Domain\Shared\Outbox\OutboxMessage;
final readonly class PlaceOrderUseCase
{
public function __construct(
private OrderRepositoryInterface $orders,
private OutboxRepositoryInterface $outbox,
private TransactionInterface $transaction
) {}
public function execute(PlaceOrderCommand $command): OrderId
{
return $this->transaction->execute(function () use ($command): OrderId {
$order = Order::place(
OrderId::generate(),
CustomerId::fromString($command->customerId),
$command->items
);
$this->orders->save($order);
// Store event in outbox within same transaction
foreach ($order->releaseEvents() as $event) {
$this->outbox->save(new OutboxMessage(
id: $event->eventId,
aggregateType: 'Order',
aggregateId: $order->id()->toString(),
eventType: $event->eventName(),
payload: json_encode($event->toArray()),
createdAt: $event->occurredAt,
correlationId: $command->correlationId
));
}
return $order->id();
});
}
}| Violation | Where to Look | Severity |
|---|---|---|
| Publish before commit | Event published without outbox | Critical |
| No idempotency key | OutboxMessage without unique ID | Critical |
| Two-phase commit | Distributed transaction attempt | Critical |
| Missing retry logic | No retry count in outbox | Warning |
| No dead letter handling | Failed messages lost | Warning |
| Unbounded polling | No limit on batch size | Warning |
| Synchronous publish in transaction | HTTP call in DB transaction | Critical |
# Find outbox implementations
Glob: **/Outbox/**/*.php
Glob: **/outbox*.php
Grep: "outbox|OutboxMessage|OutboxRepository" --glob "**/*.php"
# Check for proper transactional outbox
Grep: "->save.*->outbox|outbox.*transaction" --glob "**/UseCase/**/*.php"
# Detect anti-patterns: publishing in transaction
Grep: "transaction.*publish|->publish\(.*\)->commit" --glob "**/*.php"
# Find message relay/processor
Grep: "findUnprocessed|processOutbox|OutboxProcessor" --glob "**/*.php"
# Check for idempotency handling
Grep: "messageId|eventId|idempotencyKey" --glob "**/Consumer/**/*.php"
# Find Doctrine outbox table
Grep: "outbox_messages|OutboxMessage.*Entity" --glob "**/Infrastructure/**/*.php"CREATE TABLE outbox_messages (
id UUID PRIMARY KEY,
aggregate_type VARCHAR(255) NOT NULL,
aggregate_id VARCHAR(255) NOT NULL,
event_type VARCHAR(255) NOT NULL,
payload JSONB NOT NULL,
correlation_id VARCHAR(255),
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
processed_at TIMESTAMP NULL,
retry_count INT NOT NULL DEFAULT 0,
INDEX idx_unprocessed (processed_at, created_at)
);For detailed information, load these reference files:
references/outbox-patterns.md — Implementation strategies and patternsreferences/antipatterns.md — Common violations with detection patternsreferences/php-specific.md — PHP 8.4 specific implementationsassets/report-template.md — Structured audit report template© dykyi-roman, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 4 other files (references, assets) in skills/outbox-pattern-knowledge of dykyi-roman/awesome-claude-code.
Open the folder on GitHubat commit 7e1fea8
Outbox Pattern Knowledge next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Outbox Pattern Knowledge this skilldykyi-roman/awesome-claude-code | 103 | — | ~2.9k | Automated safety check: Pass | MIT | |
| Capture Conversationoutline/outline | 41k | — | ~474 | Automated safety check: Pass | Custom licence | |
| Project CairniBlinkQ/project-cairn | 235 | 2 repos | ~861 | Automated safety check: Pass | MIT | |
| LLM Wiki Knowledge GraphEgonex-AI/Understand-Anything | 86k | 1 repos | ~1.5k | Automated safety check: Pass | MIT | |
| Find And Citeoutline/outline | 41k | — | ~537 | Automated safety check: Pass | Custom licence | |
| Xhs Virtual Productchenjin-cmd/xhs-virtual-product | 727 | — | ~862 | Automated safety check: Pass | MIT |
outline/outline
Save the current conversation, a decision, or a set of notes as a document in an Outline collection; use when the user wants to keep what was discussed in their knowledge base.
iBlinkQ/project-cairn
Standardize how an AI-collaboration project turns work into reusable knowledge.
Egonex-AI/Understand-Anything
Detects a Karpathy-pattern LLM wiki and builds an interactive knowledge graph with entities, implicit relationships and topic clusters.
outline/outline
Answer questions from the Outline knowledge base with quotes and links to the source documents; use when the user asks what the team knows, documented, or decided about a topic.
chenjin-cmd/xhs-virtual-product
This skill helps plan, select, produce, and market Xiaohongshu (RED) virtual/digital products — templates, knowledge bases, test tools, study materials.
VectifyAI/OpenKB
A skill your agent uses when the user asks about content in their OpenKB knowledge base — research topics, concepts compiled from their documents, cross-document synthesis — or mentions openkb, an…
dykyi-roman/awesome-claude-code
GRASP principles knowledge base for PHP 8.4 projects. An agent skill from dykyi-roman/awesome-claude-code.
dykyi-roman/awesome-claude-code
PSR-4 autoloading standard knowledge base for PHP 8.4 projects.
dykyi-roman/awesome-claude-code
PSR-1 and PSR-12 coding standards knowledge base for PHP 8.4 projects.
dykyi-roman/awesome-claude-code
PHP Standards Recommendations (PSR) overview knowledge base.
dykyi-roman/awesome-claude-code
SOLID principles knowledge base for PHP 8.4 projects. An agent skill from dykyi-roman/awesome-claude-code.
dykyi-roman/awesome-claude-code
Comprehensive knowledge base for Claude Code formats, patterns, and configuration.
Works with
Categories
Outbox Pattern knowledge base. An agent skill from dykyi-roman/awesome-claude-code. Outbox Pattern Knowledge is an agent skill from dykyi-roman/awesome-claude-code. Outbox Pattern knowledge base.
Outbox Pattern Knowledge fits situations like: tasks that involve Knowledge bases.
Run `npx skills add dykyi-roman/awesome-claude-code --skill outbox-pattern-knowledge -a claude-code`. Or copy the skill folder (skills/outbox-pattern-knowledge in dykyi-roman/awesome-claude-code) into .claude/skills/outbox-pattern-knowledge in your project. Claude Code loads it when a task matches its description.
Run `npx skills add dykyi-roman/awesome-claude-code --skill outbox-pattern-knowledge -a codex`. Or copy the skill folder (skills/outbox-pattern-knowledge in dykyi-roman/awesome-claude-code) into .agents/skills/outbox-pattern-knowledge in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add dykyi-roman/awesome-claude-code --skill outbox-pattern-knowledge -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/outbox-pattern-knowledge, .gemini/skills/outbox-pattern-knowledge, .github/skills/outbox-pattern-knowledge and .opencode/skills/outbox-pattern-knowledge in your project.
SKILL.md names no scripts, command-line tools or credentials: Outbox Pattern Knowledge is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Outbox Pattern Knowledge is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.9k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 8.2k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Outbox Pattern Knowledge: Capture Conversation (outline/outline, 41k stars), Project Cairn (iBlinkQ/project-cairn, 235 stars), LLM Wiki Knowledge Graph (Egonex-AI/Understand-Anything, 86k stars) and Find And Cite (outline/outline, 41k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
dykyi-roman (a GitHub user) maintains it in dykyi-roman/awesome-claude-code, which has 103 GitHub stars. The repository holds 11 skills in this directory. The repository was last updated on August 16, 2026.
Source: dykyi-roman/awesome-claude-code on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.