agentCLAWHUBUnverified

AI-Shifu Course Creator

Create, edit, publish, and manage AI-Shifu courses Skill: AI-Shifu Course Creator Owner: heshaofu2 Summary: Create, edit, publish, and manage AI-Shifu courses Tags: latest:1.2.12 Version history: v1.2.12 | 2026-10-09T12:11:02.704Z | user Release 1.2.12 from source commit c02069f8b37883970a849d3b95cee3be6dc10cb0 v1.2.11 | 2026-10-09T10:02:27.971Z | user Release 1.2.11 from source commit 03abd1ef4f16cd631663d9b5414418b822e78b44 v1.2.9 | 2026-09-18T01:02:02.185Z | user

OpenClaw

Rank

62

Safety

84

Downloads

2.7k

Updated

Oct 9, 2026

Version

1.2.12

Source

CLAWHUB

About

What it does, and when to use it.

Capability contract not published. No trust telemetry is available yet. 2.7K downloads reported by the source. Last updated 10/9/2026.

Avoid when

  • Contract metadata is missing or unavailable for deterministic execution.

Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing

Public facts

Every fact links back to the source it came from.

Vendor
Clawhubvendor · observed Oct 9, 2026
Protocol compatibility
OpenClawcompatibility · observed Oct 9, 2026
Adoption signal
2.7K downloadsadoption · observed Oct 9, 2026
Latest release
1.2.12release · observed Oct 9, 2026
Handshake status
UNKNOWNsecurity

Install and run

Setup complexity: low.

clawhub skill install s174994v2pe98a51ggwn8075a5842zws:ai-shifu-course-creator
  1. Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.
  2. Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.

Contract: missing

curl -s "https://www.xpersona.co/api/v1/agents/clawhub-heshaofu2-ai-shifu-course-creator/snapshot"

Documentation

CLAWHUB

160,000 characters of source documentation, loaded on request.

Extracted files

5 files captured from the source.

SKILL.md

---
name: ai-shifu-course-creator
description: Use when the user works with AI-Shifu (AI师傅) courses in any capacity of creating, writing, editing, rewriting, optimizing, reordering, deploying, publishing, previewing, or managing Teaching Prompts (per-lesson) and Course Prompts (course-level) — both written in MarkdownFlow (MDF). Covers the full course lifecycle — from converting raw material into structured lessons, to authoring interactions (single-select, multi-select, input, branching), adding variables, images, and course prompts, to deploying and managing live courses on the AI-Shifu platform. Also covers post-deployment analytics on those courses — learner count, completion rate, stuck lessons, orders, revenue, ratings, credit consumption, audience profiles, and individual learner tracking. Trigger on any mention of AI-Shifu, AI师傅, MarkdownFlow, Teaching Prompt, Course Prompt authoring, course analytics, creator analytics, 学习人数, 完成率, 卡课节, 订单收入, 积分消耗, or learner progress.
metadata:
  version: 1.2.12
  version_management: standalone
---

# AI-Shifu Course Creator

Route each request to the smallest complete instruction set needed to create, edit, optimize, deploy, manage, or analyze an AI-Shifu course. Teaching Prompts and Course Prompts use MarkdownFlow.

## User-Facing Links

Use Markdown links `[descriptive text](URL)` for URLs in every user-visible message. URLs inside Teaching Prompts follow MarkdownFlow rules, and URLs shown inside fenced code blocks are exempt.

## Startup Sequence

On the first invocation in a session:

1. Read `references/language-policy.md` and resolve `resolved_target_language` before the first user-visible response.
2. Read `references/session-controls.md` completely before the first user-visible response.
3. Apply its contact, explicit-request-only version-check, progress/error, and handoff rules.
4. Classify the request with the routing table below.
5. Read every file or anchored section listed for the selected Task Router row, then execute the listed stages in order. Reading a later-stage reference does not execute its steps early; in particular, do not authenticate while preparing local content merely because deployment follows. When one file appears at multiple anchored stages, read it once and apply each named section at its listed point. The Task Router declares the required workflow stages.
6. In each selected reference, read the ordered bullets under `## Required References` before applying that reference. Resolve those strong dependencies transitively.
7. Load a reference's `## Conditional References` only when its stated condition applies. Outside the Task Router, `## Required References`, and applicable `## Conditional References`, every file-path mention is navigation only and never changes the selected stages.
8. For mixed requests, combine the relevant rows and preserve their dependency order.

## Task Router

| User intent | Required files, in order |
| --- | --- |
| Create a full course or run new

_meta.json

{
  "ownerId": "kn7b3n8650t0nqw9m9wjkw7afs82gpbk",
  "slug": "ai-shifu-course-creator",
  "version": "1.2.12",
  "publishedAt": 1791547862704
}

references/analytics/dsl.md

# Analytics DSL Syntax

All examples are CLI invocations. Analytics task orientation is documented in `overview.md`.

## Required References

None.

## Body Shape

```json
{
  "table": "<one of the 10 tables>",
  "select":    ["<field>", "..."],
  "where":     [{ "field": "<f>", "op": "<op>", "value": <value> }],
  "group_by":  ["<field>", "..."],
  "aggregate": [{ "fn": "<fn>", "field": "<f>", "alias": "<name>" }],
  "order_by":  [{ "field": "<f>", "dir": "asc" | "desc" }],
  "limit":  <1..1000>,
  "offset": <int>
}
```

`shifu_bid` is **not** required in the body — the CLI injects it from the positional `<shifu_bid>` argument. If you write `shifu_bid` in the body, it must match the positional argument or the CLI errors out.

## Operators (`where[].op`)

| Operator | Notes |
| --- | --- |
| `=`, `!=` | Equality |
| `>`, `>=`, `<`, `<=` | Numeric / date comparison |
| `in` | `value` is a list |
| `not_in` | `value` is a list |
| `between` | `value` is a two-element list `[lo, hi]` (inclusive) |
| `like` | Trailing `%` only; leading-wildcard `like` is rejected |
| `is_null`, `is_not_null` | `value` ignored |

## Aggregate Functions (`aggregate[].fn`)

| Fn                         | Use                        |
| -------------------------- | -------------------------- |
| `count`                    | Row count                  |
| `count_distinct`           | Distinct values of `field` |
| `sum`, `avg`, `min`, `max` | Numeric aggregates         |

Every aggregate must carry an `alias` — the output column is named after it.

## Constraints (enforced server-side; violations → `11002` / `11007`)

- `limit ≤ 1000`
- `select` cannot be `*`
- When `aggregate` is present, every column in `select` **must** also appear in `group_by`
- When `group_by` is present, explicitly add each grouping field to `select` (otherwise the response `columns` carry only the aggregate aliases)
- `like` cannot start with `%` (anti-enumeration)

## Per-Learner (`user_bid`) Dimension

6 of the 10 tables support per-learner grouping. Excluded: `user_users` (has its own rules in `privacy-and-presentation.md`), `bill_daily_usage_metrics` (no `user_bid` column — it is a daily summary), and the two `shifu_*_shifus` metadata tables (course-level, not learner-level — they describe the course itself).

**Guard rail**: when `user_bid` appears in `select`, it **must** also appear in `group_by`.

- Correct: `select=["user_bid"], group_by=["user_bid"], aggregate=[…]`
- Rejected: `select=["user_bid", "status"]` (no aggregate)
- Rejected: `select=["user_bid"], group_by=["status"]` (`user_bid` not in `group_by`)

`user_bid` is a 36-char pseudonymous ID. **Never paste it raw in user-facing output** — use ordinal labels (Learner A / B / C) per the Translation Gate in `privacy-and-presentation.md`.

## Minimal DSL Example

The smallest legal body is `table` plus either `select` or `aggregate`:

```bash
python3 scripts/shifu-cli.py analytics-query <shifu_bid> --dsl '{
  "table": "learn_progress_re

references/analytics/overview.md

# Analytics Overview

Use this page to classify analytics intent and plan the query after `SKILL.md` selects the analytics route. Apply the execution path owned by `workflow.md` and read deeper references on demand.

## Required References

None.

## When to Use

Enter the analytics path when a course author or admin asks about:

- learner count, completion rate, stuck lessons, recent activity
- orders, revenue, refunds, payment-channel distribution
- ratings, listen-vs-read preference
- follow-up Q&A counts or specific learner conversations
- follow-up Q&A volume by lesson
- credit consumption (per-charge detail / by day / by model / by scene / by usage type) — use `shifu-cli.py credit-detail`
- which wallet absorbed the deduction for a given course
- audience profile distribution (goals, level, preferences)
- individual learner tracking — with the privacy rules in `privacy-and-presentation.md`
- **course title resolution** — "what is my course `<title>` currently called", "did I rename it", "is the draft title diverging from the published title" (follow the Course Metadata path in `recipes.md`)

> Raw token counts are **not** exposed to creators. Any question about "how much was spent" maps to credits — query via `shifu-cli.py credit-detail`.

Do **not** enter the analytics path when the user asks only "how many courses do I have?" — that is a `shifu-cli.py list` call.

## Execution Contract

Apply the execution contract in `workflow.md#cli-only-rule`. Use this overview to translate the user's question into the appropriate CLI command and DSL query plan.

## Query Planning

1. For a DSL-backed question, translate the user's request into a DSL body using `dsl.md` (syntax), `tables.md` (which table answers which question + which fields exist), and `recipes.md` (Course Metadata resolution, Course Overview 0d, + 23 numbered scenario recipes).
2. Apply the privacy rules in `privacy-and-presentation.md` if the query touches `user_users`, `generated_content`, or `var_variable_values.value`.
3. Apply the Translation Gate in `privacy-and-presentation.md` before presenting any result.
4. **If the user mentioned a course by title**, follow the Course Metadata resolution path in `recipes.md` and interpret the result through `tables.md#course-title-is-current-published-not-history`.
5. **If the user asks about credit consumption**, use `shifu-cli.py credit-detail` instead of issuing a DSL query against `bill_daily_usage_metrics` — that table is empty in production pending the daily aggregation cron.

## Error Codes the CLI May Surface

When an analytics response carries a business `code`, interpret it as follows:

| Code | Meaning | Action |
| --- | --- | --- |
| `0` | Success | Parse `data.columns` / `data.rows`, then apply the Translation Gate |
| `11001` | No access to this course | Confirm the `shifu_bid` is owned by the logged-in user; switch course or stop |
| `11002` | Invalid DSL | Re-check required fields, duplicate `alias`, or leading-wildcard `li

references/analytics/privacy-and-presentation.md

# Privacy & Presentation

Two concerns: the privacy rules baked into the endpoint (refusals, audits, masking) and the Translation Gate that every result must pass before reaching the user.

## Required References

None.

## `user_users` — Restricted Access

`user_users` is a **global** user table with two legitimate uses:

- **Use A** — translate a known pseudonymous `user_bid` to a display nickname.
- **Use B** — given a learner's phone number or email, reverse-look up their `user_bid`, then query other tables with it.

Any violation of the rules below returns `11002` (`invalidDsl`):

1. `select` may only include `{user_bid, nickname, user_identify}`. `avatar` / `name` / `birthday` are **permanently off-limits** — refuse any request for these.
2. `where` must include one of these anchor filters (unconditional listing of all users is prohibited):
   - `user_bid`: `op` must be `=` or `in` (no `like`, no range)
   - `user_identify`: `op` must be `=` (exact phone/email match only; `in`, `like`, and range are **prohibited** to prevent bulk enumeration)
3. `limit ≤ 50`
4. `group_by` and aggregates are **not allowed**
5. Server-side audit: `user_id + shifu_bid + filter type + timestamp`
6. Automatic privacy handling on returned rows:
   - `nickname`: **full redaction** — replaced with `[REDACTED-PHONE]` / `[REDACTED-EMAIL]` / `[REDACTED-IDCARD]` when a phone, email, or ID number is detected in the original value
   - `user_identify`: **masked** — first and last characters retained, middle replaced with `*****` (phone: `138*****000`, email: `te*****@example.com`)

### Use A — look up nickname by `user_bid`

Collect `user_bid` values from another query first, then resolve names in one batch:

```bash
python3 scripts/shifu-cli.py analytics-query <bid> --dsl '{
 "table":"user_users",
 "select":["user_bid","nickname"],
 "where":[{"field":"user_bid","op":"in","value":["u-bid-1","u-bid-2","u-bid-3"]}],
 "limit":50
}'
```

Returns:

```json
{
  "columns": ["user_bid", "nickname"],
  "rows": [
    ["u-bid-1", "Python 学徒"],
    ["u-bid-2", "[REDACTED-PHONE]"],
    ["u-bid-3", "Alice"]
  ]
}
```

### Use B — reverse-look up `user_bid` from a phone number

```bash
python3 scripts/shifu-cli.py analytics-query <bid> --dsl '{
 "table":"user_users",
 "select":["user_bid","nickname","user_identify"],
 "where":[{"field":"user_identify","op":"=","value":"13800138000"}],
 "limit":1
}'
```

Returns:

```json
{
  "columns": ["user_bid", "nickname", "user_identify"],
  "rows": [["u-bid-xxx", "Python 学徒", "138*****000"]]
}
```

Once you have the `user_bid`, use it to query `order_orders` (purchase status), `learn_progress_records` (learning progress), `learn_generated_blocks` (follow-up questions), etc.

Even when the nickname is redacted, **never paste the raw `user_bid` in user-facing output.** Continue using ordinals ("Learner A / Learner B") with the nickname appended: `Learner A (Python 学徒)`, `Learner B (redacted)`, `Learner C (Alice)`.

## `learn_generated_blocks.genera
Github ReposUpdated 3h agoRank 70

AionUi

Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!

MCPOPENCLAW
Github ReposUpdated 6mo agoRank 70

activepieces

AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents

OPENCLAW
Github ReposUpdated 6mo agoRank 70

cherry-studio

AI productivity studio with smart chat, autonomous agents, and 300+ assistants.

MCPOPENCLAW
Github ReposUpdated 7mo agoRank 70

CopilotKit

The Frontend for Agents & Generative UI. React + Angular

OPENCLAW

Machine-readable data

The same record, as JSON, for agents and crawlers.

{
  "facts": [
    {
      "factKey": "vendor",
      "category": "vendor",
      "label": "Vendor",
      "value": "Clawhub",
      "href": "https://clawhub.ai/heshaofu2/skills/ai-shifu-course-creator",
      "sourceUrl": "https://clawhub.ai/heshaofu2/skills/ai-shifu-course-creator",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-09T12:23:30.787Z",
      "isPublic": true
    },
    {
      "factKey": "protocols",
      "category": "compatibility",
      "label": "Protocol compatibility",
      "value": "OpenClaw",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-heshaofu2-ai-shifu-course-creator/contract",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-heshaofu2-ai-shifu-course-creator/contract",
      "sourceType": "contract",
      "confidence": "medium",
      "observedAt": "2026-10-09T12:23:30.787Z",
      "isPublic": true
    },
    {
      "factKey": "traction",
      "category": "adoption",
      "label": "Adoption signal",
      "value": "2.7K downloads",
      "href": "https://clawhub.ai/heshaofu2/ai-shifu-course-creator",
      "sourceUrl": "https://clawhub.ai/heshaofu2/ai-shifu-course-creator",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-09T12:23:30.787Z",
      "isPublic": true
    },
    {
      "factKey": "latest_release",
      "category": "release",
      "label": "Latest release",
      "value": "1.2.12",
      "href": "https://clawhub.ai/heshaofu2/ai-shifu-course-creator",
      "sourceUrl": "https://clawhub.ai/heshaofu2/ai-shifu-course-creator",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-10-09T12:11:02.704Z",
      "isPublic": true
    },
    {
      "factKey": "handshake_status",
      "category": "security",
      "label": "Handshake status",
      "value": "UNKNOWN",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-heshaofu2-ai-shifu-course-creator/trust",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-heshaofu2-ai-shifu-course-creator/trust",
      "sourceType": "trust",
      "confidence": "medium",
      "observedAt": null,
      "isPublic": true
    }
  ],
  "events": [
    {
      "eventType": "release",
      "title": "Release 1.2.12",
      "description": "Release 1.2.12 from source commit c02069f8b37883970a849d3b95cee3be6dc10cb0",
      "href": "https://clawhub.ai/heshaofu2/ai-shifu-course-creator",
      "sourceUrl": "https://clawhub.ai/heshaofu2/ai-shifu-course-creator",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-10-09T12:11:02.704Z",
      "isPublic": true
    }
  ]
}

Record generated Oct 9, 2026.

Sponsored

Ads related to AI-Shifu Course Creator and adjacent AI workflows.