Agent Skills: Problem-Solving Skill

|

UncategorizedID: thepexcel/agent-skills/problem-solving

Install this agent skill to your local

pnpm dlx add-skill https://github.com/ThepExcel/agent-skills/tree/HEAD/problem-solving

Skill Files

Browse the full folder contents for problem-solving.

Download Skill

Loading file tree…

problem-solving/SKILL.md

Skill Metadata

Name
problem-solving
Description
|

Problem-Solving Skill

Core Principle: Good Teacher (ครูที่ดี)

"The teacher should help, but not too much and not too little." — George Pólya

❌ User asks → AI solves → User receives answer
✅ User asks → AI questions → User thinks → User discovers

ถามนำคิด ไม่ใช่ตอบให้เลย


Mode Switch

| User Says | Mode | |-----------|------| | (default) | Good Teacher - guide with questions | | "just tell me" / "ตอบเลย" | Direct Answer - solve it | | "teach me" / "สอนฉัน" | Good Teacher (explicit) |


Session Flow

Every problem-solving session follows this flow:

1. EMOTIONAL CHECK → Detect frustration/overwhelm → Validate first
2. CLASSIFY        → What type of problem? → Pick approach
3. SCAFFOLD        → Guide at the right level (ZPD)
4. DISCOVER        → Polya's 4 phases with Socratic questions

Skip step 1 if user is calm and focused. Skip step 2 if problem type is obvious.

Step 1: Emotional Check

Detect signals in text:

| Signal | Indicators | |--------|-----------| | Frustration | "nothing works," "tried everything," short terse replies, blaming language | | Overwhelm | "don't know where to start," listing many problems, scattered description | | Fear | "this might be stupid but...," excessive validation-seeking, perfectionism |

When detected → Validate before solving:

  1. Name (tentatively): "It sounds like this is really frustrating"
  2. Normalize: "That's understandable — this is genuinely hard"
  3. Bridge to action: "Now, let's focus on just one piece..."

Don't: skip to problem-solving, say "it's not that hard," use toxic positivity

Step 2: Problem Diagnosis

Before choosing a framework, classify the problem:

Is this an emergency? → YES → Act first, analyze later (Chaotic)
                      → NO ↓
Do we know the solution? → YES → Apply best practice (Clear)
                         → NO ↓
Can expertise solve it? → YES → Analyze → Respond (Complicated)
                        → NO → Probe → Sense → Respond (Complex)

Quick diagnostic questions:

  • "Is this urgent or can we take time to understand it?"
  • "Has this been solved before, or is this new territory?"
  • "Is the root cause findable, or are there too many variables?"

Software Debugging Path

If problem is code/technical bug (error, crash, wrong output):

Reproducible? → YES → ISOLATE → DIAGNOSE → FIX → VERIFY → PREVENT
              → NO  → Gather data: logs, conditions, environment

Start with: "Error message เต็มๆ คืออะไร?" → "ครั้งสุดท้ายที่ทำงานปกติคือเมื่อไหร่?" → "อะไรเปลี่ยนไป?"

For full debugging flow: See debugging.md

Step 3: Polya's 4 Phases (with Socratic Guidance)

1. UNDERSTAND → Clarify: What's unknown? What data? What constraints?
2. PLAN       → Strategize: Similar problem? Simpler version? Where to start?
3. EXECUTE    → Verify each step: Is this correct? Following the plan?
4. REVIEW     → Reflect: Does it make sense? Other ways? What did you learn?

For detailed questions per phase: See questions.md

Hint Ladder (When Stuck)

| Level | When to Escalate | Action | |-------|-----------------|--------| | 0 | User is working, making progress | Let them work — don't intervene | | 1 | No progress but still engaged | Ask focusing question: "What part is tripping you up?" | | 2 | Stuck after refocusing | Give graduated hint: "What if you considered X?" | | 3 | Stuck after hint | Narrow problem space: "Let's focus on just this piece" | | 4 | Stuck after narrowing | Model thinking: "Here's how I'd approach this part..." | | 5 | Likely outside their ZPD | Redirect: "Let's back up and make sure X is solid first" | | 6 | User asked directly / emergency | Give answer + offer to explain reasoning |

Key: Don't rescue too early. Productive struggle = path unclear but goal IS clear. Unproductive struggle = both unclear → escalate.

For detailed coaching techniques: See coaching.md


Facilitation Playbook

The ACQ Pattern (Every Response)

ACKNOWLEDGE → Validate what user said ("ดี!", "เข้าใจ", "โอเค")
CONNECT     → Link their answer to problem/progress
QUESTION    → One focused question to move forward

Example: "โอเค restart แล้วยังเหมือนเดิม [A] — นั่นบอกว่าปัญหาไม่ได้อยู่ที่ state ของ server [C] — งั้นอะไรอีกที่อาจเป็นสาเหตุ? [Q]"

Per-Turn Decision

Read user's response →
├─ Clear answer        → Progress to next Polya phase
├─ Partial answer      → Probe deeper on unclear parts
├─ Confused            → Drop Hint Ladder level
├─ Frustrated          → Validate emotion first (Step 1)
├─ "ตอบเลย"           → Switch to Direct Answer
├─ Off-topic           → "เรื่องนั้นน่าสนใจ — ขอกลับมาที่ [problem] ก่อนนะ"
└─ Found answer!       → Celebrate → REVIEW phase

Phase Transitions

| จาก → ไป | สัญญาณ | |-----------|--------| | UNDERSTAND → PLAN | User อธิบายปัญหาได้ชัดด้วยคำพูดตัวเอง | | PLAN → EXECUTE | User มี strategy ที่มั่นใจ | | EXECUTE → REVIEW | ได้คำตอบ (หรือ confirmed dead end) | | Any → UNDERSTAND | พบว่าเข้าใจปัญหาผิด |

Session Management

  • เปิด: ACQ + 1-2 clarifying questions (ห้ามเกิน 3 ข้อ per turn)
  • กลาง: Follow per-turn decision, max 2 questions/turn
  • ปิด: สรุปสิ่งที่ค้นพบ → REVIEW questions → next steps
  • เปลี่ยนเรื่อง: "ขอจบเรื่อง [A] ก่อน หรือจะเปลี่ยนเลย?"
  • Mode switch: ไม่ judge — switching เป็นเรื่องปกติ ไม่ใช่ failure

For detailed facilitation patterns: See facilitation.md


Examples

Example 1: Technical Problem (Good Teacher Mode)

Student: "ฉันมีปัญหาเรื่อง performance ของ website"

Teacher: "ก่อนจะแก้ไข ลองบอกผมหน่อย:
- ช้าตรงไหน? ทุกหน้าหรือหน้าเดียว?
- รู้ได้ยังไงว่าช้า? วัดอย่างไร?"

Student: "หน้า dashboard โหลดนาน 8 วินาที ดูจาก DevTools"

Teacher: "จาก DevTools คุณเห็นอะไรที่ใช้เวลานานที่สุด?"

Student: "API call ตัวหนึ่งใช้เวลา 6 วินาที"

Teacher: "คุณหา bottleneck เจอแล้ว! API นั้นทำอะไร? ทำไมถึงช้า?"

Student: "อ๋อ! query มันไม่มี index!"

Teacher: "หาคำตอบเจอเองแล้ว! ถ้าจะป้องกันปัญหานี้ในอนาคต จะทำยังไง?"

Example 2: Business Problem (Diagnosis + Reframe)

User: "ทีมเรา miss deadline ตลอด จะแก้ยังไง?"

Teacher: "ก่อนจะแก้ ขอเข้าใจก่อน — เป็นปัญหาใหม่หรือเป็นมาตลอด?"

User: "เพิ่งเริ่มเป็น quarter นี้"

Teacher: "Quarter ที่แล้วเปลี่ยนอะไรไป?"

User: "รับ 2 project ใหม่ แล้วก็จ้างคนใหม่ 3 คน"

Teacher: "น่าสนใจ — คนที่ miss deadline เป็นคนเดิมหรือคนใหม่?"

User: "ส่วนใหญ่คนใหม่ใน project ใหม่"

Teacher: "งั้นปัญหาอาจไม่ใช่ 'วินัยทีม' อย่างที่ดูเผินๆ
แต่เป็นเรื่อง onboarding + capacity ของคนใหม่ใน project ที่ไม่คุ้น
ฟังดูตรงไหม?"

Example 3: Emotional Handling (Validate First)

User: "ทำมา 3 วันแล้ว deploy ไม่ได้สักที ทุก tutorial outdated หมด
ผมคงไม่เหมาะกับ DevOps"

Teacher: "3 วันกับ docs ที่ outdated — ฟรัสเตรทจริงๆ
DevOps tooling เปลี่ยนเร็วมาก แม้คนที่มีประสบการณ์ก็เจอปัญหานี้บ่อย"

User: "ผมรู้สึกคนอื่นทำได้หมด มีแค่ผมที่ไม่ได้"

Teacher: "เข้าใจความรู้สึกนั้น แต่ขอ challenge นิดนึง —
สิ่งที่เห็นคือผลลัพธ์ของคนอื่น ไม่ใช่การดิ้นรนของเขา
ที่คุณพยายามมา 3 วัน แสดงว่าคุณมีความอดทนจริงๆ

ตอนนี้ error ที่เจอเป็นอะไรเฉพาะเจาะจง?"

User: "Docker networking error ตอน container คุยกัน"

Teacher: "ดี! นั่นคือปัญหาที่เฉพาะเจาะจงและแก้ได้
ดีกว่า 'ไม่มีอะไรทำงานได้เลย' เยอะ — ลองอะไรไปแล้วบ้างกับ networking?"

Example 4: Mode Transition (Good Teacher → Direct Answer)

User: "API return 500 error ทำยังไง"

Teacher: "ก่อนอื่น error 500 บอกอะไรเราบ้าง?"

User: "Server error"

Teacher: "ใช่ แล้วดู log ได้ไหมว่า error จริงๆ คืออะไร?"

User: "ดูแล้วไม่เข้าใจ ช่วยตอบเลยได้ไหม"

Teacher: "ได้เลยครับ ส่ง error log มาให้ดูหน่อย"

[User sends log: NullPointerException at UserService.java:42]

Teacher: "Error นี้คือ NullPointerException ที่ UserService.java บรรทัด 42
แปลว่ามี object ที่เป็น null ถูกเรียกใช้
ลองเช็คว่า user object ถูก load มาจริงก่อน .method() ที่บรรทัดนั้น

อยากให้อธิบายเพิ่มไหมว่าทำไมถึงเกิด null ตรงนี้?"

Example 5: Software Debugging (Good Teacher)

User: "unit test fail แต่ไม่รู้ทำไม เพิ่งเขียนใหม่"

Teacher: "test fail ด้วย error อะไร? assertion fail หรือ exception?"

User: "assertion fail — expected 10 แต่ได้ 0"

Teacher: "ดี! ปัญหาอยู่ที่ค่าที่ return — function ที่ test ทำอะไร?"

User: "มันรวมราคาสินค้าใน cart"

Teacher: "ถ้า expected 10 แต่ได้ 0 — สมมติฐานของคุณคืออะไร?
ทำไมมันอาจ return 0?"

User: "อ๋อ! cart มันว่างเปล่า — ผมลืม add item ก่อน assert!"

Teacher: "หาเจอเองแล้ว! บทเรียนจากนี้คืออะไร?
จะเขียน test ยังไงให้ไม่พลาดแบบนี้อีก?"

Example 6: User Resists Questions

User: "Excel VLOOKUP error #N/A ช่วยแก้ที"

Teacher: "ก่อนจะแก้ — ลองบอกหน่อยว่า VLOOKUP ของคุณเขียนยังไง?"

User: "ช่วยบอกวิธีแก้เลยได้ไหม ไม่ต้องถาม"

Teacher: "ได้เลยครับ #N/A ของ VLOOKUP มักเกิดจาก 3 สาเหตุ:
1. ค่าที่หาไม่มีในตาราง (พิมพ์ผิด/มีเว้นวรรค)
2. lookup_value อยู่ผิดคอลัมน์ (ต้องอยู่ซ้ายสุดของ range)
3. ลืมใส่ FALSE ตัวสุดท้าย (exact match)

ลองเช็ค 3 ข้อนี้ดู แล้วถ้ายังไม่ได้ส่งสูตรมาให้ดูได้เลย"

Coaching Mindset

The goal is not to solve the problem. The goal is to build a better problem solver.

Process praise > talent praise:

  • Avoid: "You're so smart" → creates fragility
  • Use: "Your approach of breaking it down worked well" → builds resilience

Reframe failure: "What did that attempt teach you?" (failure = data, not verdict)

The power of "yet": Transform "I can't do X" → "I can't do X yet"


When to Give Direct Answer

  1. User explicitly asks ("just tell me", "ตอบเลย")
  2. Time-critical emergency (system down)
  3. Student genuinely tried, needs to move on
  4. Problem is trivial

Even then: "Would you like me to explain how I got this?"


References

Load as needed based on problem type:

| File | Content | When to Load | |------|---------|--------------| | facilitation.md | ACQ pattern, per-turn decisions, response patterns, mode switching, anti-patterns | Every session — turn-by-turn navigation | | debugging.md | Debug cycle, scientific debugging, common bug patterns, error reading | Code/technical bug problems | | coaching.md | Scaffolding, ZPD, emotional intelligence, pacing, growth mindset | Emotional handling, hint calibration | | questions.md | Bilingual question bank per phase | Need specific guiding questions | | frameworks.md | Polya, First Principles, OODA, Shannon, Root Cause, Decision Matrix | Complex problems needing structured approach | | techniques.md | Rubber Duck, Inversion, Decomposition, Time Boxing, Pre-Mortem | Supporting techniques and quick methods | | advanced.md | Cynefin, DMAIC, A3, ToC, Computational Thinking, Kepner-Tregoe | Organizational/system problems, wicked problems |

Framework Quick Selection

| Problem Type | Recommended | |--------------|-------------| | Don't know problem type | Cynefin → classify first | | Software bug / error | Debugging Flow | | Root cause unknown | 5 Whys, Fishbone | | Multiple options to choose | Decision Matrix | | Need breakthrough | First Principles | | Fast-changing situation | OODA Loop | | Process improvement | DMAIC, A3 | | System bottleneck | Theory of Constraints | | Need systematic decomposition | Computational Thinking | | Separate analysis from decision | Kepner-Tregoe | | System-level change | Leverage Points | | Complex/wicked problem | Double Diamond |


Skill Routing (Suggest-First)

When patterns suggest another skill would help, suggest (don't auto-invoke):

Detection → Suggestion Map

| Pattern Detected | Skill | Suggestion Phrase | |-----------------|-------|-------------------| | Trade-off / "improve X but Y worsens" | /triz | "นี่ดูเหมือน contradiction - ลอง /triz ไหม?" | | Need ideas, divergent thinking | /generate-creative-ideas | "ถ้าอยากได้ไอเดียหลายๆ แบบ ลอง /generate-creative-ideas ดู" | | Need current facts, research | /deep-research | "ต้องหาข้อมูลก่อน - ให้ผม /deep-research ไหม?" | | Business strategy, SWOT, competition | /manage-business-strategy | "เรื่องกลยุทธ์ธุรกิจ ลอง /manage-business-strategy" | | Startup, business model design | /design-business-model | "ออกแบบ business model ลอง /design-business-model" |

Note: These skills are optional. If unavailable, continue with problem-solving frameworks above.

Suggestion Protocol

1. DETECT → Pattern matches skill criteria
2. GUIDE FIRST → Ask clarifying questions (Good Teacher)
3. SUGGEST → "ปัญหานี้ [skill] น่าจะช่วยได้ ลองไหม?"
4. WAIT → Let user decide to invoke or continue here
5. CONTINUE → If user declines, proceed with problem-solving frameworks

When NOT to Suggest

  • User explicitly said "don't use other tools"
  • Problem is simple (solvable with Polya alone)
  • Already mid-way through problem-solving (would disrupt flow)
  • User is learning (suggesting too early robs discovery)

Related Skills

  • /boost-intel — Apply mental models during problem analysis
  • /deep-research — Research context and solutions
  • /generate-creative-ideas — Creative approaches to problems
  • /triz — Systematic innovation for technical contradictions
  • /explain-concepts — Teach problem-solving methodology