|
| 1 | +--- |
| 2 | +name: new-article |
| 3 | +description: "Initialize a new blog article for TechWatching.dev with sequential numbering, frontmatter, and placeholder content. Use when creating a new blog post, starting a new article, scaffolding a post, or adding content to the blog." |
| 4 | +argument-hint: "topic or title for the new article" |
| 5 | +--- |
| 6 | + |
| 7 | +# New Blog Article |
| 8 | + |
| 9 | +Initialize a new blog article for TechWatching.dev with correct frontmatter and placeholder content. |
| 10 | + |
| 11 | +## When to Use |
| 12 | + |
| 13 | +- Creating a new blog post / article |
| 14 | +- Scaffolding a post with frontmatter and placeholder sections |
| 15 | +- Starting content for TechWatching.dev |
| 16 | + |
| 17 | +## Procedure |
| 18 | + |
| 19 | +### 1. Determine the next article number |
| 20 | + |
| 21 | +Check the files in `content/1.posts/` directory. Find the highest numeric prefix and increment by 1 to get the next article number. |
| 22 | + |
| 23 | +### 2. Create the article file |
| 24 | + |
| 25 | +Use the naming convention: `{number}.{slug}.md` inside `content/1.posts/`. |
| 26 | + |
| 27 | +- The slug should be lowercase, hyphen-separated, and derived from the topic/title. |
| 28 | +- Example: `79.my-new-topic.md` |
| 29 | + |
| 30 | +### 3. Choose the badge category |
| 31 | + |
| 32 | +Pick the `badge.label` based on the topic: |
| 33 | + |
| 34 | +| Category | When to use | |
| 35 | +|----------|-------------| |
| 36 | +| `Tooling` | Tools, extensions, CLI utilities, developer productivity | |
| 37 | +| `DevOps` | CI/CD, infrastructure, cloud platforms, deployment | |
| 38 | +| `Development` | Programming concepts, frameworks, coding practices | |
| 39 | +| `Essay` | Thoughts, retrospectives, career advice, learning | |
| 40 | +| `Tips` | Weekly tips posts | |
| 41 | + |
| 42 | +### 4. Choose tags |
| 43 | + |
| 44 | +Tags should be relevant to the content. Follow these casing rules: |
| 45 | + |
| 46 | +- **Proper casing for technologies**: `.NET`, `ASP.NET Core`, `Nuxt`, `Vue.js`, `TypeScript`, `OpenTelemetry` |
| 47 | +- **Lowercase for concepts**: `tooling`, `learning`, `thoughts`, `devops`, `api` |
| 48 | +- **Weekly tips**: always include `tips learned this week` tag |
| 49 | + |
| 50 | +### 5. Fill in frontmatter fields |
| 51 | + |
| 52 | +| Field | Required | Notes | |
| 53 | +|-------|----------|-------| |
| 54 | +| `title` | Yes | Use quotes for titles with colons or special characters | |
| 55 | +| `description` | Yes | Brief summary (can use quotes) | |
| 56 | +| `date` | Yes | Today's date in `YYYY-MM-DD` format | |
| 57 | +| `image.src` | Yes | Cover image path (default: `/images/placeholder_1.jpg`) | |
| 58 | +| `badge.label` | Yes | Category from the table above | |
| 59 | +| `tags` | No | Array of relevant tags | |
| 60 | +| `canonical` | No | URL if cross-posted from another site | |
| 61 | +| `ImageAttribution` | No | Credit for stock photos | |
| 62 | + |
| 63 | +### 6. Apply the template |
| 64 | + |
| 65 | +Use the [article template](./templates/article.md) as the body structure. Fill in frontmatter based on the topic but keep the placeholder body content as-is. |
| 66 | + |
| 67 | +### 7. Code block convention |
| 68 | + |
| 69 | +Code blocks with filenames use `[filename]` syntax after the language identifier: |
| 70 | + |
| 71 | +````markdown |
| 72 | +```typescript [nuxt.config.ts] |
| 73 | +// code here |
| 74 | +``` |
| 75 | +```` |
| 76 | + |
| 77 | +## Output |
| 78 | + |
| 79 | +Create only the initialized article file in `content/1.posts/` with frontmatter filled based on the topic and the placeholder structure from the template. Do NOT write actual article content. |
0 commit comments