misty-step/Landmark
Focused release pipeline using semantic-release with optional LLM-powered synthesis.
View on GitHubTrust Signals
- Scorecard Score
- not yet scored
- Maintenance Recency
- Activelast commit Jul 9, 2026
- License
- MIT
Pinned Snippet
uses: misty-step/landmark@35d002b7a2bc80efc6d0f412b5adbc3f6a96eeab # v0.28.1tags can be moved; commit SHAs can't. why a SHA?
Inputs
| name | description | required | default |
|---|---|---|---|
| mode | Pipeline mode: 'full' (semantic-release + synthesis), 'synthesis-only' (synthesize for existing tag). | no | full |
| release-tag | Release tag to synthesize notes for (required when mode is synthesis-only). | no | "" |
| github-token | Personal access token with repository write access. | yes | — |
| llm-api-key | API key for LLM synthesis (OpenRouter, OpenAI, or any compatible provider). | no | — |
| llm-model | Primary model ID for synthesis (e.g., 'anthropic/claude-sonnet-5', 'anthropic/claude-haiku-4.5'). | no | "" |
| llm-fallback-models | Comma-separated fallback model IDs tried in order if primary fails. | no | "" |
| llm-api-url | Chat completions endpoint URL (OpenAI-compatible). | no | https://openrouter.ai/api/v1/chat/completions |
| node-version | Node.js version for semantic-release. | no | 24 |
| stability | Versioning stability policy: 'auto' (detect from latest tag; below 1.0.0 or untagged is pre-stable), 'pre-stable' (Cargo-style 0.x: breaking bumps minor, feat/fix bump patch, never auto-crosses 1.0.0), or 'stable' (standard SemVer). Ignored when the repo ships its own semantic-release config. | no | auto |
| synthesis | Whether to synthesize user-facing release notes. | no | true |
| synthesis-required | Whether synthesis failures should fail the action. When true, a failed LLM key validation (healthcheck) also blocks the run before the release is published. | no | false |
| synthesis-strict | Deprecated alias for synthesis-required. | no | false |
| synthesis-failure-issue | Whether to create a GitHub issue in the consuming repository when synthesis fails. | no | false |
| notes-output-file | Write synthesized notes to this file path. Use {version} placeholder for the release tag (e.g., 'docs/releases/{version}.md'). | no | "" |
| notes-output-text-file | Write synthesized notes as plaintext to this file path. Use {version} placeholder (e.g., 'docs/releases/{version}.txt'). | no | "" |
| notes-output-html-file | Write synthesized notes as an HTML fragment to this file path. Use {version} placeholder (e.g., 'docs/releases/{version}.html'). | no | "" |
| notes-output-json | Append a structured release entry to this JSON array file. Creates the file if it does not exist. | no | "" |
| prompt-template-path | Path to a custom synthesis prompt template (relative to repo root). Overrides audience and convention-based detection (.landmark/synthesis-prompt.md). | no | "" |
| audience | Built-in synthesis prompt variant used when no custom prompt template is found. One of general, developer, end-user, enterprise. | no | "" |
| product-description | One-line product description injected into the synthesis prompt as {{PRODUCT_CONTEXT}}. | no | "" |
| voice-guide | Tone/style guidance injected into the synthesis prompt as {{VOICE_GUIDE}}. | no | "" |
| changelog-source | Technical source for synthesis. One of auto (CHANGELOG.md > release body > PRs), changelog, release-body, prs. | no | "" |
| healthcheck | Validate LLM API key with a minimal probe request before synthesis. Catches stale or revoked keys early. | no | false |
| floating-tags | Update floating major version tags (e.g., v1) after release. Recommended for GitHub Actions repos. | no | false |
| webhook-url | Webhook endpoint URL. On synthesis success, POST a JSON payload with version, notes (markdown/HTML/plaintext), and release URL. | no | "" |
| webhook-secret | HMAC-SHA256 secret for signing webhook payloads (X-Signature-256 header). Optional. | no | "" |
| slack-webhook-url | Slack Incoming Webhook URL. On synthesis success, POST a Block Kit message with version, categorized notes, and release link. | no | "" |
| rss-feed-file | Path to an RSS 2.0 feed file to update on release (e.g., 'docs/releases.xml'). The file is committed back to the repo. | no | "" |
| rss-max-entries | Maximum number of RSS entries to retain in the feed file. | no | 50 |
Outputs
| name | description |
|---|---|
| released | Whether a release was created (full mode) or targeted (synthesis-only mode). |
| release-tag | Release tag (created by semantic-release in full mode, or from input in synthesis-only mode). |
| synthesis-succeeded | Whether synthesis and release body update completed successfully. |
| release-notes | Synthesized user-facing release notes markdown. Empty if synthesis was skipped or failed. |
| synthesis-quality | Quality of synthesized output: valid (passed validation), degraded (validation failed, using unvalidated output), skipped (policy skip), or failed. |
| synthesis-status | Machine-readable JSON status for synthesis, model attempts, context sources, cost metadata, classification, and publication destinations. |
| webhook-sent | Whether the webhook notification was sent successfully. |
| slack-sent | Whether the Slack notification was sent successfully. |
| synthesis-failure-issue-action | Companion issue lifecycle result: closed, reported, failed, or skipped. |