Skip to content

Commit 0d60d1a

Browse files
Merge pull request #363 from rest-sh/blog
docs: add Restish blog
2 parents f413926 + a72f95c commit 0d60d1a

26 files changed

Lines changed: 1380 additions & 64 deletions

.agents/skills/rsh-docs/SKILL.md

Lines changed: 49 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
---
22
name: rsh-docs
3-
description: Documentation writer and maintainer
3+
description: Write and maintain Restish documentation, blog posts, release announcements, tutorials, recipes, and user-facing product explanations.
44
---
55

66
# Restish Documentation
77

8-
You write and maintain Restish documentation. Help users succeed with the CLI, and help maintainers preserve design intent. Docs are part of the product, not release-note filler or a wrapper around implementation details.
8+
You write and maintain Restish documentation and product writing. Help users succeed with the CLI, and help maintainers preserve design intent. Docs and posts are part of the product, not release-note filler or a wrapper around implementation details.
99

1010
## Scope
1111

12-
Maintain user docs in `site/`, design docs in `docs/design/`, user-facing Markdown elsewhere, examples, tutorials, recipes, plugin docs, and Go doc comments for exported APIs.
12+
Maintain user docs in `site/`, blog posts in `site/content/en/blog/`, design docs in `docs/design/`, user-facing Markdown elsewhere, examples, tutorials, recipes, plugin docs, and Go doc comments for exported APIs.
1313

1414
When user-visible behavior changes, update user docs. When architecture or subsystem behavior changes significantly, update or add a design doc.
1515

@@ -23,6 +23,7 @@ Choose one primary mode before writing:
2323
- Reference: complete factual lookup; terse, predictable, example-backed.
2424
- Troubleshooting: symptom, cause, confirm, fix, prevention.
2525
- Design doc: why the system is shaped this way; alternatives and consequences.
26+
- Blog post or announcement: product story, release context, technical idea, or design rationale; narrative entry point backed by concrete Restish behavior.
2627

2728
Do not blur modes casually. If reference needs context, link to a guide. If a design doc changes user behavior, write the user-facing explanation too.
2829

@@ -125,6 +126,48 @@ Config reference: include scope, precedence, file location, fields, types, defau
125126

126127
Troubleshooting: repeat the shape `Symptom`, `Likely cause`, `How to confirm`, `Fix`, `Prevention`, `Related docs`. Good topics include auth failures, OpenAPI loading/cache, content negotiation, pagination, shorthand parsing, plugin discovery, and output formatting.
127128

129+
Blog post or announcement: lead with the user problem, product change, or technical bet. Keep the narrative grounded in examples users can try. Use the post to create interest and explain why the work matters, then route exact syntax and long-lived procedures to docs pages.
130+
131+
## Blog Posts And Announcements
132+
133+
Use blog posts for release stories, API tooling ideas, OpenAPI/CLI design notes,
134+
automation patterns, plugin/MCP stories, and deeper product decisions. Blog
135+
posts can be warmer and more narrative than reference docs, but they must stay
136+
technically specific and useful.
137+
138+
General notes for blog posts:
139+
140+
- Reintroduce the project without assuming readers know older posts.
141+
- State what stayed familiar before explaining what changed.
142+
- Frame comparisons generously: `curl`, Postman, SDKs, and Swagger UI all have
143+
valid jobs; Restish owns the shell-native, API-aware workflow between them.
144+
- Keep product vocabulary explicit. Command naming, stdout/stderr behavior,
145+
auth placement, pagination, and plugin boundaries are user-facing design.
146+
- Put runnable `restish-example` shortcodes near the claims they support.
147+
- Use plain fenced commands when setup is local-only or not suitable for the
148+
browser preview.
149+
- Prefer public `api.rest.sh` examples and call out when the browser preview
150+
has built-in API mappings that differ from local setup.
151+
- Include a concise "try it locally" section with install, first request, API
152+
connect, and 3-5 durable next links.
153+
- Use front matter consistently: `title`, `linkTitle`, `date`, `author`,
154+
`description`, `canonical_url`, `categories`, and `tags`.
155+
156+
Good blog shape:
157+
158+
1. Hook: name the user pain, product change, or timely technical idea.
159+
2. Thesis: say where Restish fits and what the reader will learn.
160+
3. Concrete path: show direct request, generated API command, output/filtering,
161+
auth, pagination, plugin, or MCP behavior as relevant.
162+
4. Why it matters: explain tradeoffs, compatibility, security, or design
163+
reasoning without turning the post into a design doc.
164+
5. Try it: include local install or upgrade steps and link to maintained docs.
165+
166+
Avoid turning posts into vague marketing copy. Avoid dunking on adjacent tools.
167+
Avoid making blog posts the only source for exact commands, migration steps, or
168+
security-sensitive behavior; link to durable docs and update those docs when the
169+
post reveals a gap.
170+
128171
## Plugin Docs
129172

130173
Always separate operator docs from author docs. Operators need install/configure/run/verify/debug. Authors need contract, inputs/outputs, lifecycle, testing, compatibility, packaging, and distribution. Do not make operators read authoring internals to use a plugin.
@@ -167,4 +210,7 @@ After meaningful site changes, run:
167210
hugo --source site --quiet
168211
```
169212

213+
For blog changes that affect social cards, run `npm run social-images` from
214+
`site/` or `npm run build` if dependencies are available.
215+
170216
Also verify new links, check examples against current CLI behavior, grep touched docs for stale `api.example.com` placeholders and leftover `Source material:` sections, and prefer examples that can later be validated against `api.rest.sh` or promoted into tests.

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/.DS_Store
1+
.DS_Store
22

33
# Local build outputs from `go build ./cmd/...`.
44
/restish
@@ -15,6 +15,7 @@
1515
/refactor.md
1616
/testing.md
1717
/test-findings.md
18+
/blog.md
1819

1920
# Local Codex skill installs.
2021
/skills-lock.json

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ Andy Warhol mural in Miami gif /images/gif
4444
Use Homebrew for the easiest managed install on macOS:
4545

4646
```bash
47-
brew install rest-sh/tap/restish
47+
brew install restish
4848
restish --version
4949
```
5050

docs/release-packaging.md

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,15 @@ older version such as `0.21.2`.
3535
GoReleaser injects the tag version into
3636
`github.com/rest-sh/restish/v2/internal/cli.Version`.
3737

38-
## Homebrew Tap
38+
## Homebrew
3939

40-
The public tap is:
40+
The primary Homebrew install path for the current v2 CLI is Homebrew core:
41+
42+
```bash
43+
brew install restish
44+
```
45+
46+
The public tap still exists for legacy and plugin formulae:
4147

4248
```text
4349
rest-sh/tap
@@ -49,28 +55,29 @@ The GitHub repository backing that tap must be named:
4955
rest-sh/homebrew-tap
5056
```
5157

52-
Stable v2 releases update the main formula:
58+
Stable v2 releases should update the Homebrew core `restish` formula. After
59+
publishing, verify the core formula installs the current v2 binary:
5360

5461
```bash
55-
brew install rest-sh/tap/restish
62+
brew install restish
63+
restish --version
64+
restish api.rest.sh/
5665
```
5766

58-
The tap also keeps a separate `restish@1` formula for the last v1 release. That
59-
formula is intentionally keg-only so it can coexist with the current `restish`
60-
formula without fighting for the same linked executable.
67+
The tap keeps a separate `restish@1` formula for the last v1 release. That
68+
formula is intentionally keg-only so it can coexist with the current core
69+
`restish` formula without fighting for the same linked executable.
6170

6271
```bash
6372
brew install rest-sh/tap/restish@1
6473
```
6574

6675
The release workflow uses the existing Restish Releaser GitHub App secrets
6776
(`RELEASER_APP_ID` and `RELEASER_APP_PRIVATE_KEY`) to mint a short-lived token
68-
with access to `rest-sh/homebrew-tap`. GoReleaser uses it to update v2 formulae,
69-
and the workflow seeds the v1 formula from `packaging/homebrew/restish@1.rb`.
70-
71-
Do not use unqualified `brew install restish` for v2 verification until the
72-
tap/core state is checked. The documented user path is the official tap:
73-
`brew install rest-sh/tap/restish`.
77+
with access to `rest-sh/homebrew-tap`. The workflow seeds the v1 formula from
78+
`packaging/homebrew/restish@1.rb` and updates first-party plugin formulae in the
79+
tap. Do not advertise `rest-sh/tap/restish` as the normal v2 install path while
80+
Homebrew core is current.
7481

7582
## mise
7683

site/README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ npm run build
2525

2626
## Notes
2727

28-
- Content lives under `content/en/docs/`.
28+
- Documentation content lives under `content/en/docs/`.
29+
- Blog content lives under `content/en/blog/`.
2930
- The theme is provided through Hugo Modules.
3031
- Social preview images are generated into `static/images/social/` before
3132
Hugo runs. That directory is ignored because CI regenerates it for deploys.

0 commit comments

Comments
 (0)