# Firm Delivery Export

> Post-processing skill for firm-orchestration: converts the structured JSON output of a multi-agent workflow run into real deliverables — GitHub Pull Requests, Jira/Linear tickets, Markdown reports, project briefs or structured documents. Acts as the last-mile bridge between agent output and team tooling.

- Skill: `dvcrn/firm-delivery-export` (Agent Skill)
- Install (CLI): `npx skillmds@latest add dvcrn/firm-delivery-export`
- Raw SKILL.md: https://api.skillmd.com/api/skills/dvcrn/firm-delivery-export/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: dvcrn (https://skillmd.com/u/dvcrn)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/dvcrn/firm-delivery-export

---


# firm-delivery-export

Converts firm workflow output into **real deliverables** in team tooling.

## Supported formats

| Format | Target | Required env |
|---|---|---|
| `github_pr` | GitHub repository PR | `GITHUB_TOKEN` |
| `jira_ticket` | Jira issue | `JIRA_API_TOKEN` + `JIRA_BASE_URL` |
| `linear_issue` | Linear issue | `LINEAR_API_KEY` |
| `markdown_report` | Local file / chat | none |
| `structured_document` | Markdown with frontmatter | none |
| `project_brief` | Structured PDF-ready doc | none |
| `slack_digest` | Slack message via webhook | `SLACK_WEBHOOK_URL` |

## Usage (after firm-orchestration run)

```
Use firm-delivery-export to publish last workflow result as a GitHub PR:
  repo: "myorg/myrepo"
  branch: "ai/sprint-24-plan"
  title: "feat: Sprint 24 plan (AI-generated, human review pending)"
  reviewers: ["@john", "@sarah"]
```

## GitHub PR output schema

```json
{
  "format": "github_pr",
  "repo": "org/repo",
  "branch": "ai/{kebab-objective}",
  "base": "main",
  "title": "...",
  "body": "## AI-generated delivery\n\n{merged_output}\n\n---\n_Generated by firm-orchestration_",
  "draft": true,
  "reviewers": [],
  "labels": ["ai-generated", "needs-review"]
}
```

## Jira ticket output schema

```json
{
  "format": "jira_ticket",
  "project": "ENG",
  "issue_type": "Story",
  "summary": "...",
  "description": "{merged_output}",
  "priority": "Medium",
  "labels": ["ai-generated"],
  "components": []
}
```

## Security notes

- `GITHUB_TOKEN` must have `repo` scope — use fine-grained tokens scoped to target repo
- All PRs are created as **drafts** by default (`draft: true`) — never auto-merged
- Human review is mandatory: a `needs-review` label is applied unconditionally
- `JIRA_API_TOKEN` is never logged (masked in audit trail)
- Slack webhook URLs are treated as secrets (masked in JSONL audit)

## Error handling

| Error | Behavior |
|---|---|
| API rate limit | Retry with exponential backoff (3 attempts, max 30s) |
| Auth failure | Fail fast, output error to session, never retry |
| Network timeout | Fallback to `markdown_report` format locally |
| Invalid schema | Reject with validation error listing missing fields |

## Example with delivery pipeline

```
1. Run firm-orchestration:
   objective: "Document the payment service API"
   departments: ["engineering", "operations"]
   delivery_format: "github_pr"

2. Run firm-delivery-export automatically:
   → Creates draft PR "docs: Payment service API documentation"
   → Branch: ai/document-payment-service-api
   → Labels: ai-generated, needs-review, documentation
   → Assigns to @team-engineering for review
```

---

## 💎 Support

Si ce skill vous est utile, vous pouvez soutenir le développement :

**Dogecoin** : `DQBggqFNWsRNTPb6kkiwppnMo1Hm8edfWq`

