@nahisaho/shikigami 1.20.0 → 1.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/prompts/shikigami-qiita-article.prompt.md +225 -0
- package/.github/prompts/shikigami-report-writing.prompt.md +36 -6
- package/.github/skills/configs/auto-invoke-triggers.yaml +120 -3
- package/.github/skills/shikigami-writing/SKILL.md +196 -10
- package/AGENTS.md +98 -2
- package/CHANGELOG.md +79 -0
- package/package.json +1 -1
- package/scripts/cli.js +6 -0
- package/.github/prompts/sdd-change-apply.prompt.md +0 -108
- package/.github/prompts/sdd-change-archive.prompt.md +0 -99
- package/.github/prompts/sdd-change-init.prompt.md +0 -107
- package/.github/prompts/sdd-design.prompt.md +0 -88
- package/.github/prompts/sdd-implement.prompt.md +0 -106
- package/.github/prompts/sdd-requirements.prompt.md +0 -84
- package/.github/prompts/sdd-review.prompt.md +0 -102
- package/.github/prompts/sdd-security.prompt.md +0 -228
- package/.github/prompts/sdd-steering.prompt.md +0 -100
- package/.github/prompts/sdd-tasks.prompt.md +0 -97
- package/.github/prompts/sdd-test.prompt.md +0 -230
- package/.github/prompts/sdd-validate.prompt.md +0 -102
- package/.github/skills/musubix-adr-generation/SKILL.md +0 -74
- package/.github/skills/musubix-best-practices/SKILL.md +0 -92
- package/.github/skills/musubix-c4-design/SKILL.md +0 -82
- package/.github/skills/musubix-code-generation/SKILL.md +0 -101
- package/.github/skills/musubix-domain-inference/SKILL.md +0 -74
- package/.github/skills/musubix-ears-validation/SKILL.md +0 -128
- package/.github/skills/musubix-sdd-workflow/SKILL.md +0 -76
- package/.github/skills/musubix-technical-writing/SKILL.md +0 -177
- package/.github/skills/musubix-test-generation/SKILL.md +0 -80
- package/.github/skills/musubix-traceability/SKILL.md +0 -137
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
---
|
|
2
|
+
mode: agent
|
|
3
|
+
description: Qiita記事を作成する(Qiita Writing Rules強制適用)
|
|
4
|
+
tools: ['shikigami-writing']
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Qiita記事作成プロンプト(v1.22.0)
|
|
8
|
+
|
|
9
|
+
> **⚠️ 重要**: このプロンプトが呼び出されたら、**必ず**Qiita Writing Rulesを適用すること。
|
|
10
|
+
>
|
|
11
|
+
> **WHEN**: 「Qiita記事」「技術記事」「Qiitaに投稿」等のキーワードを検出
|
|
12
|
+
> **DO**: Qiita専用フォーマットで記事を生成
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## 🎯 トリガーキーワード
|
|
17
|
+
|
|
18
|
+
以下のキーワードを検出したら、このプロンプトを適用:
|
|
19
|
+
|
|
20
|
+
| キーワード(日本語) | キーワード(英語) |
|
|
21
|
+
|---------------------|-------------------|
|
|
22
|
+
| Qiita記事 | Qiita article |
|
|
23
|
+
| 技術記事 | tech article |
|
|
24
|
+
| Qiitaに投稿 | post to Qiita |
|
|
25
|
+
| Qiita用 | for Qiita |
|
|
26
|
+
| Qiita向け | Qiita-style |
|
|
27
|
+
| 技術ブログ | tech blog |
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## 📋 必須適用ルール
|
|
32
|
+
|
|
33
|
+
### 1. フロントマター(必須)
|
|
34
|
+
|
|
35
|
+
```yaml
|
|
36
|
+
---
|
|
37
|
+
title: "[タイトル]" # 必須: 50文字以内
|
|
38
|
+
tags: Tag1, Tag2, Tag3 # 必須: 1〜5個(カンマ区切り)
|
|
39
|
+
private: false # 必須: 公開=false, 限定公開=true
|
|
40
|
+
updated_at: '' # 自動: 投稿時に設定
|
|
41
|
+
id: null # 自動: 投稿後に付与
|
|
42
|
+
organization_url_name: null # 任意: Organization投稿時
|
|
43
|
+
slide: false # 任意: スライドモード
|
|
44
|
+
---
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### 2. タイトルルール
|
|
48
|
+
|
|
49
|
+
| ルール | 基準 |
|
|
50
|
+
|--------|------|
|
|
51
|
+
| **文字数** | 30〜50文字(50文字超は検索で切れる) |
|
|
52
|
+
| **キーワード** | 主要キーワードを**前半に配置** |
|
|
53
|
+
| **数字** | 具体的数字で訴求(「5つの方法」「3ステップ」) |
|
|
54
|
+
| **ターゲット** | 対象読者を明示(「初心者向け」「実務で使える」) |
|
|
55
|
+
|
|
56
|
+
**✅ 良い例**:
|
|
57
|
+
- `【2026年版】GitHub Copilot完全ガイド|実務で使える10のTips`
|
|
58
|
+
- `Python初心者が3日でWebアプリを作る方法【Flask入門】`
|
|
59
|
+
|
|
60
|
+
**❌ 悪い例**:
|
|
61
|
+
- `Pythonについて`(抽象的すぎる)
|
|
62
|
+
- `私がReactを学んで感じた様々なことについての考察`(長すぎる)
|
|
63
|
+
|
|
64
|
+
### 3. タグ選定ルール
|
|
65
|
+
|
|
66
|
+
| タイプ | 説明 | 例 |
|
|
67
|
+
|--------|------|-----|
|
|
68
|
+
| **メインタグ** | 記事の主題(1個) | `Python`, `React`, `AWS` |
|
|
69
|
+
| **技術タグ** | 使用技術(1-2個) | `TypeScript`, `Docker` |
|
|
70
|
+
| **カテゴリタグ** | 記事種別(1個) | `初心者向け`, `Tips` |
|
|
71
|
+
| **トレンドタグ** | 旬のタグ(0-1個) | `ChatGPT`, `Copilot` |
|
|
72
|
+
|
|
73
|
+
**禁止**: 5個超、同義タグ重複(`JavaScript`と`JS`)
|
|
74
|
+
|
|
75
|
+
### 4. 記事構成(必須セクション)
|
|
76
|
+
|
|
77
|
+
```markdown
|
|
78
|
+
# はじめに(200-400字)
|
|
79
|
+
- この記事で分かること(箇条書き)
|
|
80
|
+
- 想定読者
|
|
81
|
+
- 所要時間・難易度・環境(:::note info)
|
|
82
|
+
|
|
83
|
+
## 前提条件(100-200字)※任意
|
|
84
|
+
|
|
85
|
+
## 本文セクション(1500-4000字)
|
|
86
|
+
- H2/H3で構造化
|
|
87
|
+
- コードブロックにはファイル名付与
|
|
88
|
+
- 注意点は :::note warn/alert
|
|
89
|
+
|
|
90
|
+
## まとめ(200-300字)
|
|
91
|
+
- 要点を表形式で整理
|
|
92
|
+
- 次のステップ
|
|
93
|
+
|
|
94
|
+
## 参考資料
|
|
95
|
+
- URL付きリンク必須
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**推奨総文字数**: 2,000〜5,000文字(読了時間5-15分)
|
|
99
|
+
|
|
100
|
+
### 5. Qiita専用記法
|
|
101
|
+
|
|
102
|
+
#### 注釈ボックス
|
|
103
|
+
```markdown
|
|
104
|
+
:::note info
|
|
105
|
+
💡 **ポイント**: 補足情報
|
|
106
|
+
:::
|
|
107
|
+
|
|
108
|
+
:::note warn
|
|
109
|
+
⚠️ **注意**: 落とし穴
|
|
110
|
+
:::
|
|
111
|
+
|
|
112
|
+
:::note alert
|
|
113
|
+
🚨 **重要**: 致命的な注意点
|
|
114
|
+
:::
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
#### ファイル名付きコードブロック
|
|
118
|
+
```markdown
|
|
119
|
+
```python:main.py
|
|
120
|
+
def hello():
|
|
121
|
+
print("Hello, Qiita!")
|
|
122
|
+
```
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
#### 折りたたみ
|
|
126
|
+
```markdown
|
|
127
|
+
<details><summary>📝 詳細(クリックで展開)</summary>
|
|
128
|
+
|
|
129
|
+
長い内容
|
|
130
|
+
|
|
131
|
+
</details>
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## ✅ 生成前チェックリスト
|
|
137
|
+
|
|
138
|
+
```
|
|
139
|
+
☐ フロントマター完備(title, tags, private)
|
|
140
|
+
☐ タイトル50文字以内、キーワード前半配置
|
|
141
|
+
☐ タグ1〜5個、適切な選定
|
|
142
|
+
☐ 「はじめに」に対象読者・得られる知識を明記
|
|
143
|
+
☐ コードブロックにファイル名付与(```python:main.py)
|
|
144
|
+
☐ 注釈ボックス(:::note)を活用
|
|
145
|
+
☐ 参考資料にURL付き
|
|
146
|
+
☐ 総文字数2,000〜5,000文字
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## 📝 テンプレート
|
|
152
|
+
|
|
153
|
+
```markdown
|
|
154
|
+
---
|
|
155
|
+
title: "[タイトル](50文字以内)"
|
|
156
|
+
tags: Tag1, Tag2, Tag3
|
|
157
|
+
private: false
|
|
158
|
+
updated_at: ''
|
|
159
|
+
id: null
|
|
160
|
+
organization_url_name: null
|
|
161
|
+
slide: false
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
# はじめに
|
|
165
|
+
|
|
166
|
+
**この記事で分かること**:
|
|
167
|
+
- ポイント1
|
|
168
|
+
- ポイント2
|
|
169
|
+
- ポイント3
|
|
170
|
+
|
|
171
|
+
**想定読者**: [読者層]
|
|
172
|
+
|
|
173
|
+
:::note info
|
|
174
|
+
📖 **所要時間**: 約X分
|
|
175
|
+
🎯 **難易度**: 初級/中級/上級
|
|
176
|
+
💻 **環境**: [環境情報]
|
|
177
|
+
:::
|
|
178
|
+
|
|
179
|
+
## 前提条件
|
|
180
|
+
|
|
181
|
+
- 前提知識1
|
|
182
|
+
- 前提知識2
|
|
183
|
+
|
|
184
|
+
## セクション1
|
|
185
|
+
|
|
186
|
+
[内容]
|
|
187
|
+
|
|
188
|
+
```typescript:example.ts
|
|
189
|
+
const greeting = "Hello, Qiita!";
|
|
190
|
+
console.log(greeting);
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
:::note warn
|
|
194
|
+
**注意**: [重要な注意点]
|
|
195
|
+
:::
|
|
196
|
+
|
|
197
|
+
## セクション2
|
|
198
|
+
|
|
199
|
+
[内容]
|
|
200
|
+
|
|
201
|
+
<details><summary>📝 詳細な説明(クリックで展開)</summary>
|
|
202
|
+
|
|
203
|
+
長い内容や補足情報
|
|
204
|
+
|
|
205
|
+
</details>
|
|
206
|
+
|
|
207
|
+
## まとめ
|
|
208
|
+
|
|
209
|
+
| ポイント | 内容 |
|
|
210
|
+
|---------|------|
|
|
211
|
+
| 1 | 要点1 |
|
|
212
|
+
| 2 | 要点2 |
|
|
213
|
+
| 3 | 要点3 |
|
|
214
|
+
|
|
215
|
+
**次のステップ**: [次に学ぶべきこと]
|
|
216
|
+
|
|
217
|
+
## 参考資料
|
|
218
|
+
|
|
219
|
+
- [参考資料1](https://example.com) - 説明
|
|
220
|
+
- [公式ドキュメント](https://example.com)
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
**詳細ルール参照**: [shikigami-writing SKILL.md](../skills/shikigami-writing/SKILL.md#qiita-writing-rules)
|
|
@@ -11,12 +11,42 @@ tools: ['shikigami-writing']
|
|
|
11
11
|
|
|
12
12
|
## 🎯 レポートタイプ選択
|
|
13
13
|
|
|
14
|
-
| タイプ | 対象読者 | 特徴 |
|
|
15
|
-
|
|
16
|
-
| **調査レポート** | 経営層・意思決定者 | 詳細な調査結果報告 |
|
|
17
|
-
|
|
|
18
|
-
| **提案書** | クライアント・承認者 | ROI・アクション重視 |
|
|
19
|
-
| **サマリー** | 全関係者 | 1ページ要約 |
|
|
14
|
+
| タイプ | 対象読者 | 特徴 | 参照ルール |
|
|
15
|
+
|--------|----------|------|-----------|
|
|
16
|
+
| **調査レポート** | 経営層・意思決定者 | 詳細な調査結果報告 | 標準Writing Rules |
|
|
17
|
+
| **技術記事(Qiita)** | 技術者・エンジニア | Qiita形式の知見共有 | **Qiita Writing Rules** |
|
|
18
|
+
| **提案書** | クライアント・承認者 | ROI・アクション重視 | 標準Writing Rules |
|
|
19
|
+
| **サマリー** | 全関係者 | 1ページ要約 | 標準Writing Rules |
|
|
20
|
+
|
|
21
|
+
## 📝 Qiita記事生成時の追加ルール(v1.21.0)🆕
|
|
22
|
+
|
|
23
|
+
> **WHEN**: レポートタイプが「技術記事(Qiita)」の場合
|
|
24
|
+
> **DO**: `shikigami-writing` スキルの **Qiita Writing Rules** セクションを適用
|
|
25
|
+
|
|
26
|
+
### 必須適用事項
|
|
27
|
+
|
|
28
|
+
| 項目 | ルール |
|
|
29
|
+
|------|--------|
|
|
30
|
+
| **フロントマター** | title, tags, private, updated_at を必ず含める |
|
|
31
|
+
| **タグ** | 1〜5個、メイン+技術+カテゴリ+トレンドの組み合わせ |
|
|
32
|
+
| **タイトル** | 30〜50文字、キーワード前半配置、数字で訴求 |
|
|
33
|
+
| **構成** | はじめに→前提条件→本文→まとめ→参考資料 |
|
|
34
|
+
| **記法** | `:::note info/warn/alert`、ファイル名付きコードブロック |
|
|
35
|
+
| **文字数** | 2,000〜5,000文字(読了時間5-15分) |
|
|
36
|
+
|
|
37
|
+
### Qiita品質チェックリスト
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
☐ フロントマター完備(title, tags, private)
|
|
41
|
+
☐ タイトル50文字以内
|
|
42
|
+
☐ タグ1〜5個
|
|
43
|
+
☐ はじめにセクションに対象読者・得られる知識
|
|
44
|
+
☐ コードブロックにファイル名付与
|
|
45
|
+
☐ 参考資料にURL付き
|
|
46
|
+
☐ 動作確認済みコード
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
詳細: [shikigami-writing SKILL.md](../skills/shikigami-writing/SKILL.md#qiita-writing-rules)
|
|
20
50
|
|
|
21
51
|
## 📋 生成プロセス
|
|
22
52
|
|
|
@@ -1,11 +1,59 @@
|
|
|
1
1
|
# auto-invoke-triggers.yaml
|
|
2
|
-
# v1.
|
|
2
|
+
# v1.22.0 - 自動呼出しトリガーマッピング
|
|
3
3
|
# REQ-FW-FIN-002, REQ-QA-AUTO-001, REQ-QA-AUTO-002, REQ-FW-RISK-001, REQ-FW-SRC-001, REQ-FW-STK-001, REQ-FW-KPI-001 実装
|
|
4
4
|
#
|
|
5
5
|
# 用途: ワークフロー全フェーズの自動呼出しトリガーとマッピングを定義
|
|
6
6
|
# 参照元: 各SKILL.md (planner, deep-research, consulting-framework, writing)
|
|
7
7
|
|
|
8
|
-
version: "1.
|
|
8
|
+
version: "1.22.0"
|
|
9
|
+
|
|
10
|
+
# ========================================
|
|
11
|
+
# Qiita記事作成(ショートカットワークフロー)v1.22.0 NEW!
|
|
12
|
+
# ========================================
|
|
13
|
+
qiita_article:
|
|
14
|
+
prompt: "shikigami-qiita-article.prompt.md"
|
|
15
|
+
description: "Qiita記事を直接作成(Qiita Writing Rules強制適用)"
|
|
16
|
+
priority: "P0"
|
|
17
|
+
skill: "shikigami-writing"
|
|
18
|
+
|
|
19
|
+
triggers:
|
|
20
|
+
- type: "keyword_match"
|
|
21
|
+
keywords:
|
|
22
|
+
- "Qiita記事"
|
|
23
|
+
- "Qiita"
|
|
24
|
+
- "技術記事"
|
|
25
|
+
- "技術ブログ"
|
|
26
|
+
- "Qiitaに投稿"
|
|
27
|
+
- "Qiita用"
|
|
28
|
+
- "Qiita向け"
|
|
29
|
+
- "qiita article"
|
|
30
|
+
- "tech article"
|
|
31
|
+
- "post to qiita"
|
|
32
|
+
match_type: "any"
|
|
33
|
+
|
|
34
|
+
- type: "explicit_command"
|
|
35
|
+
commands:
|
|
36
|
+
- "@qiita"
|
|
37
|
+
- "@shikigami-qiita"
|
|
38
|
+
- "Qiita記事作成"
|
|
39
|
+
- "技術記事作成"
|
|
40
|
+
|
|
41
|
+
invoke_at: "immediate"
|
|
42
|
+
|
|
43
|
+
required_rules:
|
|
44
|
+
- rule: "qiita_writing_rules"
|
|
45
|
+
description: "Qiita Writing Rulesを強制適用"
|
|
46
|
+
reference: "shikigami-writing/SKILL.md#qiita-writing-rules"
|
|
47
|
+
- rule: "frontmatter_required"
|
|
48
|
+
description: "フロントマター必須(title, tags, private)"
|
|
49
|
+
- rule: "title_max_50_chars"
|
|
50
|
+
description: "タイトル50文字以内"
|
|
51
|
+
- rule: "tags_1_to_5"
|
|
52
|
+
description: "タグ1〜5個"
|
|
53
|
+
- rule: "file_name_in_codeblock"
|
|
54
|
+
description: "コードブロックにファイル名付与"
|
|
55
|
+
|
|
56
|
+
output_format: "qiita_markdown"
|
|
9
57
|
|
|
10
58
|
# ========================================
|
|
11
59
|
# 0. Phase 0: プロジェクト初期化(ワークフロー開始点)v1.17.0 NEW!
|
|
@@ -62,7 +110,7 @@ project_initialization:
|
|
|
62
110
|
condition: "project_initialization.complete == true"
|
|
63
111
|
|
|
64
112
|
# ========================================
|
|
65
|
-
# 0.5. Phase 0.5: 構造化プロンプト生成(v1.19.0 NEW
|
|
113
|
+
# 0.5. Phase 0.5: 構造化プロンプト生成(v1.19.0 NEW! / v1.22.0 Updated)
|
|
66
114
|
# ========================================
|
|
67
115
|
prompt_refinement:
|
|
68
116
|
prompt: "shikigami-purpose-discovery.prompt.md"
|
|
@@ -77,6 +125,75 @@ prompt_refinement:
|
|
|
77
125
|
|
|
78
126
|
invoke_at: "after_phase_0"
|
|
79
127
|
|
|
128
|
+
# v1.22.0: プロンプト保存アクション
|
|
129
|
+
prompt_saving:
|
|
130
|
+
enabled: true
|
|
131
|
+
save_directory: "prompts/"
|
|
132
|
+
|
|
133
|
+
# 元のプロンプトを保存
|
|
134
|
+
original_prompt:
|
|
135
|
+
filename: "original-prompt.md"
|
|
136
|
+
save_at: "phase_0.5_start"
|
|
137
|
+
format: |
|
|
138
|
+
---
|
|
139
|
+
timestamp: "{timestamp}"
|
|
140
|
+
project_id: "{project_id}"
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
# Original Prompt
|
|
144
|
+
|
|
145
|
+
{user_input}
|
|
146
|
+
|
|
147
|
+
# 構造化プロンプトを保存
|
|
148
|
+
structured_prompt:
|
|
149
|
+
filename: "structured-prompt.md"
|
|
150
|
+
save_at: "phase_0.5_approved"
|
|
151
|
+
format: |
|
|
152
|
+
---
|
|
153
|
+
timestamp: "{timestamp}"
|
|
154
|
+
project_id: "{project_id}"
|
|
155
|
+
version: {version}
|
|
156
|
+
approved: {approved}
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
# Structured Prompt
|
|
160
|
+
|
|
161
|
+
## PURPOSE(目的)
|
|
162
|
+
{purpose}
|
|
163
|
+
|
|
164
|
+
## TARGET(調査対象)
|
|
165
|
+
{target}
|
|
166
|
+
|
|
167
|
+
## SCOPE(調査範囲)
|
|
168
|
+
{scope}
|
|
169
|
+
|
|
170
|
+
## TIMELINE(時間軸)
|
|
171
|
+
{timeline}
|
|
172
|
+
|
|
173
|
+
## CONSTRAINTS(制約条件)
|
|
174
|
+
{constraints}
|
|
175
|
+
|
|
176
|
+
## DELIVERABLES(期待する成果物)
|
|
177
|
+
{deliverables}
|
|
178
|
+
|
|
179
|
+
# 修正履歴を保存(修正があった場合のみ)
|
|
180
|
+
refinement_history:
|
|
181
|
+
filename: "refinement-history.md"
|
|
182
|
+
save_at: "on_refinement"
|
|
183
|
+
append: true
|
|
184
|
+
format: |
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## Refinement {version} - {timestamp}
|
|
189
|
+
|
|
190
|
+
**変更箇所**: {changed_elements}
|
|
191
|
+
|
|
192
|
+
**変更理由**: {reason}
|
|
193
|
+
|
|
194
|
+
**変更内容**:
|
|
195
|
+
{changes}
|
|
196
|
+
|
|
80
197
|
# 構造化プロンプト生成ルール
|
|
81
198
|
structured_prompt:
|
|
82
199
|
enabled: true
|
|
@@ -90,37 +90,223 @@ license: MIT
|
|
|
90
90
|
|
|
91
91
|
---
|
|
92
92
|
|
|
93
|
+
## Qiita Writing Rules(v1.21.0)🆕
|
|
94
|
+
|
|
95
|
+
### フロントマター(必須)
|
|
96
|
+
|
|
97
|
+
```yaml
|
|
98
|
+
---
|
|
99
|
+
title: "[タイトル]" # 必須: 50文字以内推奨
|
|
100
|
+
tags: Tag1, Tag2, Tag3 # 必須: 1〜5個(カンマ区切り)
|
|
101
|
+
private: false # 必須: 公開=false, 限定公開=true
|
|
102
|
+
updated_at: '2026-01-26' # 自動: 更新日時
|
|
103
|
+
id: null # 自動: 投稿後に付与
|
|
104
|
+
organization_url_name: null # 任意: Organization投稿時
|
|
105
|
+
slide: false # 任意: スライドモード
|
|
106
|
+
---
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### タグ選定ルール
|
|
110
|
+
|
|
111
|
+
| ルール | 説明 | 例 |
|
|
112
|
+
|--------|------|-----|
|
|
113
|
+
| **メインタグ** | 記事の主題(1個) | `Python`, `React`, `AWS` |
|
|
114
|
+
| **技術タグ** | 使用技術(1-2個) | `TypeScript`, `Docker` |
|
|
115
|
+
| **カテゴリタグ** | 記事種別(1個) | `初心者向け`, `ポエム`, `Tips` |
|
|
116
|
+
| **トレンドタグ** | 旬のタグ(0-1個) | `ChatGPT`, `Copilot` |
|
|
117
|
+
|
|
118
|
+
**禁止事項**:
|
|
119
|
+
- 同義タグの重複(`JavaScript`と`JS`両方)
|
|
120
|
+
- 関連性の薄いタグ
|
|
121
|
+
- 5個を超えるタグ
|
|
122
|
+
|
|
123
|
+
### タイトル最適化
|
|
124
|
+
|
|
125
|
+
| 要素 | ルール |
|
|
126
|
+
|------|--------|
|
|
127
|
+
| **文字数** | 30〜50文字(50文字超は検索で切れる) |
|
|
128
|
+
| **キーワード** | 主要キーワードを前半に配置 |
|
|
129
|
+
| **数字** | 具体的数字で訴求(「5つの方法」「3ステップ」) |
|
|
130
|
+
| **ターゲット** | 対象読者を明示(「初心者向け」「実務で使える」) |
|
|
131
|
+
|
|
132
|
+
**良い例**:
|
|
133
|
+
- ✅ `【2026年版】GitHub Copilot完全ガイド|実務で使える10のTips`
|
|
134
|
+
- ✅ `Python初心者が3日でWebアプリを作る方法【Flask入門】`
|
|
135
|
+
|
|
136
|
+
**悪い例**:
|
|
137
|
+
- ❌ `Pythonについて`(抽象的すぎる)
|
|
138
|
+
- ❌ `私がReactを学んで感じた様々なことについての考察と今後の展望`(長すぎる)
|
|
139
|
+
|
|
140
|
+
### 記事構成ガイドライン
|
|
141
|
+
|
|
142
|
+
| セクション | 必須 | 目安文字数 | 内容 |
|
|
143
|
+
|-----------|:---:|-----------|------|
|
|
144
|
+
| **はじめに** | ✅ | 200-400字 | 記事の目的、対象読者、得られる知識 |
|
|
145
|
+
| **前提条件** | △ | 100-200字 | 環境、必要知識、バージョン情報 |
|
|
146
|
+
| **本文** | ✅ | 1500-4000字 | 複数セクションに分割(H2/H3) |
|
|
147
|
+
| **まとめ** | ✅ | 200-300字 | 要点整理、次のステップ |
|
|
148
|
+
| **参考資料** | ✅ | - | URL付きリンク |
|
|
149
|
+
|
|
150
|
+
**推奨総文字数**: 2,000〜5,000文字(読了時間5-15分)
|
|
151
|
+
|
|
152
|
+
### Qiita記法リファレンス
|
|
153
|
+
|
|
154
|
+
#### 注釈ボックス
|
|
155
|
+
|
|
156
|
+
```markdown
|
|
157
|
+
:::note info
|
|
158
|
+
💡 **ポイント**: 補足情報・Tips
|
|
159
|
+
:::
|
|
160
|
+
|
|
161
|
+
:::note warn
|
|
162
|
+
⚠️ **注意**: 警告・落とし穴
|
|
163
|
+
:::
|
|
164
|
+
|
|
165
|
+
:::note alert
|
|
166
|
+
🚨 **重要**: 致命的な注意点
|
|
167
|
+
:::
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
#### コードブロック
|
|
171
|
+
|
|
172
|
+
```markdown
|
|
173
|
+
```python:main.py
|
|
174
|
+
# ファイル名を表示
|
|
175
|
+
def hello():
|
|
176
|
+
print("Hello, Qiita!")
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
```diff:変更点
|
|
180
|
+
- old_code()
|
|
181
|
+
+ new_code()
|
|
182
|
+
```
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
#### 折りたたみ
|
|
186
|
+
|
|
187
|
+
```markdown
|
|
188
|
+
<details><summary>クリックで展開</summary>
|
|
189
|
+
|
|
190
|
+
長いコードや補足情報
|
|
191
|
+
|
|
192
|
+
</details>
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
#### 数式(KaTeX)
|
|
196
|
+
|
|
197
|
+
```markdown
|
|
198
|
+
インライン: $E = mc^2$
|
|
199
|
+
|
|
200
|
+
ブロック:
|
|
201
|
+
$$
|
|
202
|
+
\sum_{i=1}^{n} x_i = x_1 + x_2 + \cdots + x_n
|
|
203
|
+
$$
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
#### リンクカード
|
|
207
|
+
|
|
208
|
+
```markdown
|
|
209
|
+
https://qiita.com/example/items/xxxxx
|
|
210
|
+
(URLを単独行に書くとカード表示)
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### 品質チェックリスト
|
|
214
|
+
|
|
215
|
+
| チェック項目 | 基準 |
|
|
216
|
+
|-------------|------|
|
|
217
|
+
| ☐ タイトル | 50文字以内、キーワード前半配置 |
|
|
218
|
+
| ☐ タグ | 1〜5個、適切なタグ選定 |
|
|
219
|
+
| ☐ はじめに | 対象読者・得られる知識を明記 |
|
|
220
|
+
| ☐ コードブロック | ファイル名付き、シンタックスハイライト |
|
|
221
|
+
| ☐ 画像 | alt属性付き、適切なサイズ |
|
|
222
|
+
| ☐ 参考資料 | すべてURL付き |
|
|
223
|
+
| ☐ 誤字脱字 | チェック済み |
|
|
224
|
+
| ☐ 動作確認 | コードは実行確認済み |
|
|
225
|
+
|
|
226
|
+
### SEO最適化
|
|
227
|
+
|
|
228
|
+
| 要素 | 最適化方法 |
|
|
229
|
+
|------|-----------|
|
|
230
|
+
| **タイトル** | 検索されやすいキーワードを含める |
|
|
231
|
+
| **冒頭100文字** | 記事の要約(検索結果に表示される) |
|
|
232
|
+
| **見出し** | H2/H3にキーワードを含める |
|
|
233
|
+
| **画像** | 説明的なalt属性を付与 |
|
|
234
|
+
| **内部リンク** | 関連する自分の記事へリンク |
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
93
238
|
## Qiita記事テンプレート
|
|
94
239
|
|
|
95
240
|
```markdown
|
|
96
|
-
|
|
241
|
+
---
|
|
242
|
+
title: "[タイトル](50文字以内)"
|
|
243
|
+
tags: Tag1, Tag2, Tag3
|
|
244
|
+
private: false
|
|
245
|
+
updated_at: ''
|
|
246
|
+
id: null
|
|
247
|
+
organization_url_name: null
|
|
248
|
+
slide: false
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
# はじめに
|
|
252
|
+
|
|
253
|
+
**この記事で分かること**:
|
|
254
|
+
- ポイント1
|
|
255
|
+
- ポイント2
|
|
256
|
+
- ポイント3
|
|
97
257
|
|
|
98
|
-
## はじめに
|
|
99
|
-
**この記事で分かること**: [ポイント]
|
|
100
258
|
**想定読者**: [読者層]
|
|
101
259
|
|
|
102
260
|
:::note info
|
|
103
|
-
|
|
261
|
+
📖 **所要時間**: 約X分
|
|
262
|
+
🎯 **難易度**: 初級/中級/上級
|
|
263
|
+
💻 **環境**: Node.js 20+, TypeScript 5.x
|
|
104
264
|
:::
|
|
105
265
|
|
|
106
|
-
##
|
|
266
|
+
## 前提条件
|
|
267
|
+
|
|
268
|
+
- 前提知識1
|
|
269
|
+
- 前提知識2
|
|
270
|
+
|
|
271
|
+
## セクション1
|
|
272
|
+
|
|
107
273
|
[内容]
|
|
108
274
|
|
|
109
|
-
```
|
|
110
|
-
|
|
275
|
+
```typescript:example.ts
|
|
276
|
+
// ファイル名付きコードブロック
|
|
277
|
+
const greeting = "Hello, Qiita!";
|
|
278
|
+
console.log(greeting);
|
|
111
279
|
```
|
|
112
280
|
|
|
113
281
|
:::note warn
|
|
114
282
|
**注意**: [重要な注意点]
|
|
115
283
|
:::
|
|
116
284
|
|
|
117
|
-
|
|
118
|
-
|
|
285
|
+
## セクション2
|
|
286
|
+
|
|
287
|
+
[内容]
|
|
288
|
+
|
|
289
|
+
<details><summary>📝 詳細な説明(クリックで展開)</summary>
|
|
290
|
+
|
|
291
|
+
長い内容や補足情報
|
|
292
|
+
|
|
119
293
|
</details>
|
|
120
294
|
|
|
121
295
|
## まとめ
|
|
296
|
+
|
|
297
|
+
| ポイント | 内容 |
|
|
298
|
+
|---------|------|
|
|
299
|
+
| 1 | 要点1 |
|
|
300
|
+
| 2 | 要点2 |
|
|
301
|
+
| 3 | 要点3 |
|
|
302
|
+
|
|
303
|
+
**次のステップ**: [次に学ぶべきこと、関連記事へのリンク]
|
|
304
|
+
|
|
122
305
|
## 参考資料
|
|
123
|
-
|
|
306
|
+
|
|
307
|
+
- [参考資料1](https://example.com) - 説明
|
|
308
|
+
- [参考資料2](https://example.com) - 説明
|
|
309
|
+
- [公式ドキュメント](https://example.com)
|
|
124
310
|
```
|
|
125
311
|
|
|
126
312
|
---
|