skills/planning-content/SKILL.md
Phân tích nội dung và lập outline ý chính. Input: topic, notes, URL, PDF/DOCX/EPUB/XLSX/PPTX, YouTube. Không viết bài.
npx skillsauth add hoangvantuan/claude-plugin planning-contentInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Workflow: Detect & Convert → Interview → Research → Content Map → Outlines → Save → Adjust (nếu cần)
Nguyên tắc cốt lõi:
| Reference | Mục đích | Load khi | |---|---|---| | tier-processing.md | Tier detection, batch, subagent, quality gate | Phase 4 (nếu input đã convert) |
Chỉ cần khi input là file hoặc URL cần convert:
**/planning-content/scripts/wa-envbash {path_to_wa-env}SCRIPTS_DIR, SKILL_DIR, PROJECT_ROOT, OUTPUT_DIR, REFERENCES_DIRNếu không tìm thấy wa-env: dùng WebFetch cho URL, Read cho file text. Scripts không bắt buộc.
| Input Type | Detection | Action |
|---|---|---|
| Topic thuần | Chỉ có chủ đề, không file/URL | → Phase 2 trực tiếp |
| Notes/ý tưởng rời | Bullet points, gạch đầu dòng | → Phase 2 trực tiếp |
| File (PDF/DOCX/EPUB) | Path + extension | wa-convert {path} → content.md + structure.json |
| File (XLSX/PPTX) | Path + extension | wa-convert {path} (qua Docling). Kiểm tra chất lượng, xem tier-processing.md mục "Lưu ý chất lượng conversion" |
| File (HTML/AsciiDoc) | Path + extension | wa-convert {path} (qua Docling) |
| Image (PNG/JPEG/TIFF/BMP/WEBP) | Path + extension | Dùng Read tool (multimodal) để đọc ảnh trực tiếp. Nếu cần text extraction: wa-convert {path} (OCR qua Docling) |
| URL (web page) | http:// hoặc https:// (không YouTube) | Ưu tiên WebFetch. Dùng wa-convert {url} khi WebFetch trả nội dung rác |
| YouTube URL | youtube.com hoặc youtu.be | wa-convert {url} |
| Plain text / .txt / .md | Không extension phức tạp | Read trực tiếp, hoặc wa-paste-text nếu cần lưu vào output dir |
# Auto-generate output dir
{SCRIPTS_DIR}/wa-convert /path/to/file.pdf
# Custom output dir
{SCRIPTS_DIR}/wa-convert /path/to/file.pdf my-project/input-handling
Output: content.md + structure.json trong output dir.
Lưu ý venv: Scripts dùng venv riêng tại
{SCRIPTS_DIR}/.venv/. Nếu chưa setup, chạybash {SCRIPTS_DIR}/setup.shtrước.
Khi user đưa nhiều file/URL cùng lúc:
WebFetch trực tiếpRead trực tiếpbash {SCRIPTS_DIR}/setup.sh| Lỗi | Xử lý | |---|---| | File not found | Hỏi lại path | | Unsupported format | Báo user, đề xuất convert thủ công | | URL fetch failed | Báo lỗi, dừng | | Empty content | Cảnh báo, xác nhận trước khi tiếp | | Encrypted PDF | Hỏi bản giải mã | | YouTube không có transcript | Báo user, hỏi có muốn dùng WebSearch research topic thay thế không |
Hỏi tất cả câu hỏi trong 1 lượt:
Fast-track: Nếu input đã đủ context hoặc user yêu cầu "làm luôn", giả định sensible defaults và sang Phase 3.
Tiêu chí "đầy đủ": tài liệu tự cung cấp đủ data, ví dụ, evidence cho các ý chính.
Research ở Phase 3 là tìm bổ sung (trend mới, góc nhìn khác, data gap), KHÔNG phải fetch lại nội dung đã có từ Phase 1.
Nếu input đã convert (có structure.json):
structure.json ONLY (không đọc content.md toàn bộ). Chỉ đọc content.md theo section cụ thể khi cần chi tiết.Cho topic thuần/notes:
Cho tài liệu đã convert:
outline từ structure.json: section titles, word counts, critical markers.Tính số bài:
if user_specified_article_count:
target = user_specified_count
else:
target = max(3, round(word_count / 2500))
Ước lượng theo loại input khi không có word count:
Nguyên tắc lên outline:
offset/limit từ structure.json), KHÔNG đọc toàn bộ.Format mỗi outline:
### Bài [N]: [Tiêu đề đề xuất]
- **Audience:** [Người đọc cụ thể của bài này]
- **Goal:** [Sau khi đọc, reader hiểu hoặc làm được gì]
- **Angle:** [Góc tiếp cận]
- **Thesis (ý cốt lõi):** [1 câu]
- **Key points cần cover:**
- [Ý chính 1] | data/ví dụ: [...] | nguồn: [...]
- [Ý chính 2] | data/ví dụ: [...] | nguồn: [...]
- [Ý chính 3] | data/ví dụ: [...] | nguồn: [...]
- **Takeaway / insight chính:** [Reader rút ra điều gì]
- **Open questions:** [Data còn thiếu. Nếu không có, ghi "Không"]
Cấu trúc thư mục:
{CWD}/planning-content/{topic-slug}-{YYMMDD-HHMM}/
├── input-handling/ # Chỉ khi có convert
│ ├── content.md
│ └── structure.json
├── index.md # Overview + danh sách link
├── outline-[NN]-[slug].md # Mỗi bài 1 file
├── research.md # Nếu Phase 3 chạy
└── content-map.md # Nếu input dài hoặc nhiều concepts
index.md format:
# Content Plan: [Topic]
## Overview
- Audience: [...]
- Goal: [...]
- Tổng số bài: [N]
- Nguồn input: [URL/file/topic]
- Word count gốc: [N] (nếu có structure.json)
## Danh sách Outlines
1. [Bài 1: Tiêu đề](outline-01-slug.md)
2. [Bài 2: Tiêu đề](outline-02-slug.md)
...
## Coverage Checklist (nếu batch)
- [x] Batch 1 — 10/10
- [ ] Batch 2 — 0/10
Xử lý input dài (batch):
content-map.md.index.md sau mỗi batch.Cuối cùng hỏi: "Đã hoàn thành outline cho [N] bài. Bạn muốn điều chỉnh outline nào không?"
| Yêu cầu | Xử lý | |---|---| | Sửa 1 outline | Đọc file, chỉnh theo feedback, ghi đè | | Merge 2+ outlines | Gộp key points, chọn thesis mới, xoá file thừa, cập nhật index.md | | Tách 1 outline | Chia key points thành groups, tạo file mới, cập nhật index.md | | Thêm outline mới | Tạo file theo format Phase 4.2, thêm vào index.md | | Xoá outline | Xoá file, cập nhật index.md, chạy coverage check nếu input đã convert | | Đổi thứ tự | Rename file numbers, cập nhật index.md |
Sau mỗi điều chỉnh, chạy coverage check (nếu input đã convert) để đảm bảo không bỏ sót.
tools
Viết/rà soát/tách user story, acceptance criteria, INVEST, epic, backlog từ requirement/PRD/bug/feature.
tools
Phân tích quyết định/vấn đề bằng Thu Giang Nguyễn Duy Cần: Thuật Tư Tưởng, Dịch Lý, Lão Trang, quân bình.
tools
Phân tích tình huống bằng Kinh Dịch: 64 quẻ, Âm Dương, Ngũ Hành, thời, biến, quân tử.
research
Tạo proposal/đề án có research, business case, technical solution. Trigger: RFP, bid, draft proposal, đề xuất dự án.