|
| 1 | +--- |
| 2 | +name: review-blog-post |
| 3 | +description: >- |
| 4 | + Review blog posts for the FuryStack site. Use when the user asks to review a |
| 5 | + blog post, check tagging, validate frontmatter, or verify post conventions. |
| 6 | + Also use when a branch contains new or modified posts and the user asks for a |
| 7 | + review. |
| 8 | +--- |
| 9 | + |
| 10 | +# Reviewing Blog Posts for FuryStack |
| 11 | + |
| 12 | +When reviewing a blog post, check each of the following areas and report issues grouped by severity. |
| 13 | + |
| 14 | +## 1. Frontmatter validation |
| 15 | + |
| 16 | +Posts live in `src/content/posts/` as Markdown files named `{NNN}-{slug}.md`. |
| 17 | + |
| 18 | +```yaml |
| 19 | +--- |
| 20 | +title: 'Post Title' |
| 21 | +author: [gallayl] |
| 22 | +tags: ['PrimaryCategory', 'thematic-tag', 'package-tag'] |
| 23 | +date: '2026-03-12T12:00:00.000Z' |
| 24 | +draft: false |
| 25 | +image: img/{NNN}-{short-slug}.jpg |
| 26 | +excerpt: One or two sentences shown on cards and in RSS. |
| 27 | +--- |
| 28 | +``` |
| 29 | + |
| 30 | +Check: |
| 31 | + |
| 32 | +- All required fields present: `title`, `author`, `tags`, `date`, `draft`, `excerpt`. |
| 33 | +- `date` is a valid ISO 8601 string. |
| 34 | +- `excerpt` is concise (1-2 sentences) — it appears on post cards and in the RSS feed. |
| 35 | +- `image` path (if present) points to an existing file in `src/content/posts/img/`. |
| 36 | +- File numbering is sequential (check surrounding files for gaps or collisions). |
| 37 | + |
| 38 | +## 2. Tagging review |
| 39 | + |
| 40 | +This is the most important part of the review. Tags drive post card display, related-post discovery, and package page links. |
| 41 | + |
| 42 | +### Tag structure |
| 43 | + |
| 44 | +Tags are ordered in three tiers: |
| 45 | + |
| 46 | +1. **Category tag** (first in the array) — displayed on post cards and the post header. |
| 47 | +2. **Thematic tags** — cross-cutting topics that drive related-post discovery. |
| 48 | +3. **Package tags** — `@furystack/*` package short names linking from the packages page. |
| 49 | + |
| 50 | +### Category tags (exactly one, must be first) |
| 51 | + |
| 52 | +| Tag | Use when the post... | |
| 53 | +| ----------------- | --------------------------------------------------------------- | |
| 54 | +| `Getting Started` | is a tutorial teaching how to use a feature | |
| 55 | +| `Announcement` | is news, an introduction, or a site/project update | |
| 56 | +| `Architecture` | covers design decisions, refactoring, or internals | |
| 57 | +| `Frontend` | is about the Shades UI library, components, routing, or theming | |
| 58 | + |
| 59 | +### Thematic tags (at least one, all that apply) |
| 60 | + |
| 61 | +| Tag | Use when the post... | |
| 62 | +| ---------------------- | ------------------------------------------------------ | |
| 63 | +| `tutorial` | walks through steps to achieve something | |
| 64 | +| `refactoring` | describes code or API refactoring | |
| 65 | +| `breaking-changes` | covers breaking API changes | |
| 66 | +| `dependency-injection` | discusses DI / IoC patterns | |
| 67 | +| `data-storage` | is about stores, repositories, or the data layer | |
| 68 | +| `rest-api` | covers REST API design, implementation, or consumption | |
| 69 | +| `ui-components` | is about UI components, theming, or layout | |
| 70 | +| `showcase` | relates to the Shades Showcase App | |
| 71 | +| `routing` | covers client-side routing | |
| 72 | +| `migration` | is a migration story or upgrade guide | |
| 73 | +| `site` | is about this blog or the FuryStack website itself | |
| 74 | +| `validation` | covers data validation or schema enforcement | |
| 75 | + |
| 76 | +### Package tags (for each relevant `@furystack/*` package) |
| 77 | + |
| 78 | +Use the npm short name (e.g. `inject`, `shades`, `rest`, `core`, `repository`). |
| 79 | +Only tag packages that are a **primary focus** of the post. |
| 80 | + |
| 81 | +### Tag checklist |
| 82 | + |
| 83 | +- [ ] Exactly one category tag, placed first |
| 84 | +- [ ] At least one thematic tag |
| 85 | +- [ ] Package tags for primary packages discussed (if any) |
| 86 | +- [ ] All tags have entries in `src/data/tags.yaml` — if not, flag as missing |
| 87 | +- [ ] Tag order is: category, then thematic, then package |
| 88 | + |
| 89 | +If a new thematic tag is warranted, suggest it along with a description for `src/data/tags.yaml`. |
| 90 | + |
| 91 | +## 3. Content review |
| 92 | + |
| 93 | +- `##` should be the top heading level (the `title` field renders as `<h1>`). |
| 94 | +- Links to other posts use relative paths: `/posts/{slug}/`. |
| 95 | +- Code examples have language tags on fenced blocks. |
| 96 | +- No broken links to GitHub or internal pages. |
| 97 | +- Tone matches existing posts: informal, direct, first person, occasional humor. |
| 98 | + |
| 99 | +## 4. Review output format |
| 100 | + |
| 101 | +``` |
| 102 | +## Tagging |
| 103 | +- ...issues or suggestions... |
| 104 | +
|
| 105 | +## Frontmatter |
| 106 | +- ...issues or suggestions... |
| 107 | +
|
| 108 | +## Content |
| 109 | +- ...issues or suggestions... |
| 110 | +
|
| 111 | +## Summary |
| 112 | +[One-line verdict: ready to publish / needs changes] |
| 113 | +``` |
| 114 | + |
| 115 | +Omit sections with no issues. Always include the Summary. |
0 commit comments