🎯 Bài Viết Này Giải Quyết Gì?

Bạn dùng GitHub Copilot hàng ngày, nhưng có bao giờ tự hỏi:

"Copilot chỉ autocomplete code, hay nó có thể LÀM nhiều hơn?"
"Skill là gì? Plugin là gì? Agent là gì?"
"Tại sao AI đời mới có thể gọi API, truy database, deploy code?"

Bài viết này giúp bạn hiểu Copilot Skills từ góc nhìn system design — kiến trúc bên trong, flow hoạt động, và cách nó biến AI từ chatbot thành agent.


🧠 1. Vấn Đề: AI Không Có Skill = Chỉ Là Chatbot

Without Skills (ChatGPT basic):

User: "Check order status #123"
  │
  ▼
LLM
  │
  ▼
"I don't have access to your order system.
 Please check your email or contact support."

→ AI CHỈ TRẢ LỜI TEXT. Không làm được gì thật.
With Skills (Copilot Agent):

User: "Check order status #123"
  │
  ▼
LLM → detect intent: check_order_status
  │
  ▼
Skill: getOrderStatus(orderId: "123")
  │
  ▼
API: GET /orders/123
  │
  ▼
Database → { status: "Shipped", eta: "Jan 30" }
  │
  ▼
Copilot: "Order #123 has been shipped.
          Expected delivery: Jan 30."

→ AI HÀNH ĐỘNG THẬT. Truy data thật. Trả kết quả thật.

Tóm Tắt

AI không có Skill = chatbot (chỉ nói)
AI có Skill       = agent (nói + LÀM)

🏗️ 2. Copilot Architecture — Big Picture

                    User
                     │
                     │ prompt / question
                     ▼
            +-------------------+
            |      Copilot      |
            |  (LLM Reasoning)  |
            +---------+---------+
                      │
                      │ detect intent → chọn skill
                      ▼
            +-------------------+
            |   Skill Router    |
            +---------+---------+
                      │
         +------------+------------+
         │            │            │
         ▼            ▼            ▼
    +--------+   +--------+   +--------+
    | Skill  |   | Skill  |   | Skill  |
    |   #1   |   |   #2   |   |   #3   |
    +---+----+   +---+----+   +---+----+
        │            │            │
        ▼            ▼            ▼
    REST API     Database     External
    Service      System       SaaS Tool

Ý Nghĩa Từng Layer

1. USER
   └─ Hỏi bằng ngôn ngữ tự nhiên

2. LLM REASONING
   ├─ Hiểu câu hỏi (intent detection)
   ├─ Quyết định cần dùng skill nào
   └─ Format kết quả trả về user

3. SKILL ROUTER
   ├─ Mapping intent → skill
   └─ Orchestrate nhiều skills nếu cần

4. SKILLS
   ├─ Callable functions (có input/output rõ ràng)
   ├─ Kết nối hệ thống thật
   └─ Trả data thật

5. BACKEND SYSTEMS
   └─ API, Database, SaaS — hệ thống thật đang chạy

🔬 3. Flow Hoạt Động Chi Tiết

Ví Dụ: “Check order status #123”

User: "Where is my order #123?"
   │
   ▼
┌─────────────────────────────┐
│  STEP 1: Intent Detection   │
│                             │
│  LLM phân tích:            │
│  "Where is my order"       │
│  → intent: check_order     │
│  → entity: orderId = "123" │
└──────────────┬──────────────┘
               │
               ▼
┌─────────────────────────────┐
│  STEP 2: Skill Selection    │
│                             │
│  Skill Registry:            │
│  ├─ getOrderStatus    ✅    │
│  ├─ createInvoice           │
│  ├─ searchCustomer          │
│  └─ deployService           │
│                             │
│  Match: getOrderStatus      │
└──────────────┬──────────────┘
               │
               ▼
┌─────────────────────────────┐
│  STEP 3: Execute Skill      │
│                             │
│  getOrderStatus("123")      │
│  → GET /api/orders/123      │
│  → DB query                 │
│  → { status: "Shipped" }    │
└──────────────┬──────────────┘
               │
               ▼
┌─────────────────────────────┐
│  STEP 4: Format Response    │
│                             │
│  LLM nhận raw data:        │
│  { status: "Shipped",       │
│    eta: "Jan 30" }          │
│                             │
│  Format thành:              │
│  "Order #123 đã shipped.    │
│   Dự kiến nhận: Jan 30."   │
└──────────────┬──────────────┘
               │
               ▼
           User nhận trả lời

📦 4. Copilot Skill Là Gì Chính Xác?

Định Nghĩa

Skill = Function mà AI có thể gọi (call)
        với input rõ ràng + output rõ ràng

Cấu Trúc Một Skill

{
  "name": "getOrderStatus",
  "description": "Get the current status of an order by order ID",
  "parameters": {
    "type": "object",
    "properties": {
      "orderId": {
        "type": "string",
        "description": "The unique order identifier"
      }
    },
    "required": ["orderId"]
  },
  "returns": {
    "type": "object",
    "properties": {
      "status": { "type": "string" },
      "eta": { "type": "string" }
    }
  }
}

Tại Sao Cần Description Rõ Ràng?

LLM KHÔNG đọc code.
LLM đọc DESCRIPTION để quyết định dùng skill nào.

❌ Bad description:
   "getOrderStatus"
   → LLM không chắc skill này làm gì

✅ Good description:
   "Get the current shipping status of a customer order
    by providing the order ID. Returns status and ETA."
   → LLM hiểu rõ → chọn đúng skill

🗂️ 5. Các Loại Skill

Copilot Skills
      │
      ├── 1. ACTION SKILL
      │   ├─ Gọi API để THỰC HIỆN hành động
      │   ├─ Ví dụ: createInvoice, deployService
      │   └─ Side effect: CÓ (thay đổi data)
      │
      ├── 2. KNOWLEDGE SKILL
      │   ├─ Truy vấn data để TRẢ LỜI
      │   ├─ Ví dụ: searchDocs, getCustomerInfo
      │   └─ Side effect: KHÔNG (chỉ đọc)
      │
      └── 3. AUTOMATION SKILL
          ├─ Chạy workflow nhiều bước
          ├─ Ví dụ: onboardNewEmployee, processRefund
          └─ Kết hợp nhiều action skills

Ví Dụ Cụ Thể

Action Skills:
├─ createJiraTicket("Bug in login page")
├─ deployToStaging()
├─ sendSlackNotification("Deploy done")
└─ mergeGitBranch("feature/login")

Knowledge Skills:
├─ searchCodebase("authentication logic")
├─ getTestResults("PR #456")
├─ findDocumentation("Angular routing")
└─ getDeploymentHistory("production")

Automation Skills:
├─ fullDeployPipeline()
│   ├─ runTests()
│   ├─ buildApp()
│   ├─ deployToStaging()
│   ├─ runE2E()
│   └─ deployToProduction()
│
└─ onboardDeveloper(name)
    ├─ createGitAccount()
    ├─ addToTeam()
    ├─ grantPermissions()
    └─ sendWelcomeEmail()

🔄 6. Skill Registry — Copilot Biết Có Những Skill Nào?

+─────────────────────────────────+
│         SKILL REGISTRY          │
├─────────────────────────────────┤
│ Name              │ Type        │
├───────────────────┼─────────────┤
│ getOrderStatus    │ Knowledge   │
│ createInvoice     │ Action      │
│ searchCustomer    │ Knowledge   │
│ deployService     │ Action      │
│ processRefund     │ Automation  │
│ searchCodebase    │ Knowledge   │
│ runE2ETests       │ Action      │
+───────────────────┴─────────────+

Skill Selection Flow

User prompt
   │
   ▼
LLM đọc prompt → extract intent
   │
   ▼
So sánh intent với TẤT CẢ skill descriptions
   │
   ▼
Chọn skill match nhất (hoặc nhiều skills)
   │
   ▼
Extract parameters từ prompt
   │
   ▼
Gọi skill(params)

⚡ 7. Phân Biệt: Prompt vs Skill vs Plugin vs Agent

Đây là 4 khái niệm 90% dev hay nhầm lẫn:

┌──────────┬───────────────────────────────────┬──────────────┐
│ Concept  │ Giải thích                        │ Ví dụ        │
├──────────┼───────────────────────────────────┼──────────────┤
│ Prompt   │ Chỉ dẫn text cho LLM             │ "Viết code   │
│          │ Không gọi API / system            │  Angular"    │
│          │ → Output: text                    │              │
├──────────┼───────────────────────────────────┼──────────────┤
│ Skill    │ 1 function mà AI gọi được        │ getOrder()   │
│          │ Có input/output rõ ràng           │ createUser() │
│          │ → Output: data thật               │              │
├──────────┼───────────────────────────────────┼──────────────┤
│ Plugin   │ Package gồm NHIỀU skills         │ Jira Plugin  │
│          │ = Copilot extension               │ (create,     │
│          │ → Mở rộng khả năng Copilot        │  search,     │
│          │                                   │  update)     │
├──────────┼───────────────────────────────────┼──────────────┤
│ Agent    │ LLM + Skills + Reasoning loop     │ AI Dev       │
│          │ Tự quyết định dùng skill nào,    │ Assistant    │
│          │ retry, chain nhiều skills         │              │
│          │ → Autonomous action               │              │
└──────────┴───────────────────────────────────┴──────────────┘

Diagram So Sánh

PROMPT (đơn giản nhất):
User → LLM → Text Answer

SKILL (có action):
User → LLM → Skill → API → Real Data

PLUGIN (nhiều skills):
User → LLM → Plugin → [Skill1, Skill2, Skill3] → Systems

AGENT (tự quyết định):
User → LLM → Think → Skill1 → Check → Skill2 → Think → Answer
              ↑                                    │
              └────────── reasoning loop ───────────┘

🛠️ 8. Cách Tạo Copilot Skill

Step-by-Step

┌─────────────────────────────────────┐
│  STEP 1: Define Skill               │
│                                     │
│  Tên: getOrderStatus                │
│  Description: "Get order status..." │
│  Parameters: { orderId: string }    │
│  Returns: { status, eta }           │
└──────────────┬──────────────────────┘
               │
               ▼
┌─────────────────────────────────────┐
│  STEP 2: Implement Backend          │
│                                     │
│  GET /api/orders/{id}               │
│  → Query database                   │
│  → Return JSON                      │
└──────────────┬──────────────────────┘
               │
               ▼
┌─────────────────────────────────────┐
│  STEP 3: Register Skill             │
│                                     │
│  Add to Skill Registry              │
│  Copilot nhận biết skill mới        │
└──────────────┬──────────────────────┘
               │
               ▼
┌─────────────────────────────────────┐
│  STEP 4: Test & Iterate             │
│                                     │
│  User test với prompts khác nhau    │
│  Verify LLM chọn đúng skill        │
│  Tune description nếu cần          │
└─────────────────────────────────────┘

💻 9. Copilot Skills Cho Frontend Developer

Skills Hữu Ích Nhất

Frontend Dev Copilot Skills
     │
     ├── Code Generation
     │   ├─ generateAngularComponent
     │   ├─ generateAngularService
     │   ├─ generateUnitTest
     │   └─ generateE2ETest
     │
     ├── Code Analysis
     │   ├─ explainCode
     │   ├─ findBugs
     │   ├─ suggestRefactor
     │   └─ reviewPullRequest
     │
     ├── Project Management
     │   ├─ createJiraTicket
     │   ├─ updateTaskStatus
     │   └─ searchDocumentation
     │
     └── DevOps
         ├─ runTests
         ├─ checkBuildStatus
         └─ deployToStaging

Ví Dụ Flow Thực Tế

Developer: "Generate an Angular service that calls GET /api/users
            with error handling and loading state"
   │
   ▼
Copilot LLM:
   intent → generateAngularService
   params → { endpoint: "/api/users", method: "GET",
              features: ["errorHandling", "loadingState"] }
   │
   ▼
Skill: generateAngularService(params)
   │
   ▼
Return: Complete Angular service code
   │
   ▼
Developer: Review → Accept/Edit → Done ✅

🤖 10. Kiến Trúc Copilot Agent Hoàn Chỉnh

Đây là architecture đầy đủ của AI Agent hiện đại:

                    User
                     │
                     ▼
            ┌─────────────────┐
            │   AI Agent      │
            │                 │
            │  ┌───────────┐  │
            │  │    LLM    │  │
            │  │ Reasoning │  │
            │  └─────┬─────┘  │
            │        │        │
            │  ┌─────▼─────┐  │
            │  │   Memory  │  │    ← Nhớ context conversation
            │  └─────┬─────┘  │
            │        │        │
            │  ┌─────▼─────┐  │
            │  │   Planner │  │    ← Lên kế hoạch multi-step
            │  └─────┬─────┘  │
            │        │        │
            └────────┼────────┘
                     │
            ┌────────▼────────┐
            │  Skill Router   │
            └────────┬────────┘
                     │
        ┌────────────┼────────────┐
        │            │            │
        ▼            ▼            ▼
   ┌─────────┐ ┌─────────┐ ┌─────────┐
   │ Skill 1 │ │ Skill 2 │ │ Skill 3 │
   │ Code Gen│ │ Search  │ │ Deploy  │
   └────┬────┘ └────┬────┘ └────┬────┘
        │            │            │
        ▼            ▼            ▼
    Code Gen      Knowledge    CI/CD
    Engine        Base         Pipeline

Agent vs Skill — Sự Khác Biệt Quan Trọng

SKILL (đơn lẻ):
"Generate Angular component"
→ 1 skill → 1 output → done

AGENT (multi-step reasoning):
"Fix the failing E2E test in PR #456"
→ Step 1: getTestResults(PR #456)     [Knowledge Skill]
→ Step 2: analyzeFailure(results)     [LLM Reasoning]
→ Step 3: searchCodebase(errorMsg)    [Knowledge Skill]
→ Step 4: suggestFix(code, error)     [LLM Reasoning]
→ Step 5: createPullRequest(fix)      [Action Skill]
→ Step 6: runTests(newPR)             [Action Skill]
→ Done ✅

Agent = LLM + Skills + Planning + Memory + Loop

📊 11. Tổng Kết — Từ Chatbot Đến Agent

Evolution:

Level 1: CHATBOT
├─ Chỉ trả lời text
├─ Không access system
└─ "I can't do that"

Level 2: COPILOT + SKILLS
├─ Gọi được API / function
├─ Trả data thật
└─ 1 câu hỏi → 1 skill → 1 answer

Level 3: COPILOT + PLUGINS
├─ Package nhiều skills
├─ Extend capabilities
└─ Tích hợp nhiều systems

Level 4: AI AGENT
├─ Multi-step reasoning
├─ Tự plan → execute → verify
├─ Memory across conversations
└─ Autonomous problem solving
Công thức:

LLM + Skills + Data = Copilot
Copilot + Planning + Memory + Loop = AI Agent

🎯 Checklist Tự Đánh Giá

Hiểu Concept

  • Giải thích được Copilot Skill là gì?
  • Phân biệt Prompt vs Skill vs Plugin vs Agent?
  • Hiểu flow: User → LLM → Skill → System → Response?

Hiểu Architecture

  • Vẽ được Copilot architecture diagram?
  • Biết Skill Registry hoạt động thế nào?
  • Hiểu tại sao description quan trọng cho skill selection?

Ứng Dụng

  • Liệt kê được 5 skills hữu ích cho frontend dev?
  • Hiểu sự khác biệt Action vs Knowledge vs Automation skill?
  • Biết agent reasoning loop hoạt động thế nào?

📚 Tài Liệu Tham Khảo


💡 Câu Chốt Lõi

AI không có Skill = chatbot nói suông.
AI có Skill = agent hành động thật.

Skill = function mà AI gọi được.
Plugin = package nhiều skills.
Agent = AI biết tự lên kế hoạch + gọi skills.

Hiểu Copilot Skills = hiểu tương lai
của software development.

Và tương lai đó đang đến RẤT nhanh.

“The best way to predict the future is to build it.” — Alan Kay