{"id":"df012f82-08da-4452-ac4b-bdf87274fbeb","entityType":"agent","slug":"clawhub-linzi007-zhizhi-math-coach","name":"Zhizhi Math Coach","canonicalUrl":"https://www.xpersona.co/agent/clawhub-linzi007-zhizhi-math-coach","canonicalPath":"/agent/clawhub-linzi007-zhizhi-math-coach","generatedAt":"2026-10-10T10:45:10.915Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T08:08:37.510Z","emptyReason":null},"description":"Grade math papers, explain mistakes, and track learning Skill: Zhizhi Math Coach Owner: linzi007 Summary: Grade math papers, explain mistakes, and track learning Tags: china:0.3.1, education:0.3.1, latest:0.3.1, math:0.3.1, parenting:0.3.1, worksheet:0.3.1 Version history: v0.3.1 | 2026-10-01T08:59:35.622Z | user Clarify integration with @linzi007/zhizhi-math-worksheet: same-agent handoff of selected questions, scope and language preferences; return PDFs, source mappings","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.6K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s17eh48qh47mdh81192axy3h3986z20y:zhizhi-math-coach","sourceUrl":"https://clawhub.ai/linzi007/zhizhi-math-coach","homepage":"https://clawhub.ai/linzi007/skills/zhizhi-math-coach","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/linzi007/zhizhi-math-coach","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/linzi007/skills/zhizhi-math-coach","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":64,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Grade math papers, explain mistakes, and track learning Skill: Zhizhi Math Coach Owner: linzi007 Summary: Grade math papers, explain mistakes, and track learnin"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T08:08:37.510Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T08:08:37.510Z","emptyReason":null},"stars":null,"forks":null,"downloads":1568,"packageName":null,"latestVersion":"0.3.1","tractionLabel":"1.6K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T08:08:37.510Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T08:08:37.510Z","lastCrawledAt":"2026-10-10T08:08:37.510Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T08:08:37.510Z","lastVerifiedAt":null,"highlights":[{"version":"0.3.1","createdAt":"2026-10-01T08:59:35.622Z","changelog":"Clarify integration with @linzi007/zhizhi-math-worksheet: same-agent handoff of selected questions, scope and language preferences; return PDFs, source mappings and review status before resuming authorized records or sync. Document companion installation in the same scope. No automatic dependency installation or new background permissions.","fileCount":51,"zipByteSize":135005},{"version":"0.3.0","createdAt":"2026-10-01T08:40:37.559Z","changelog":"Add complete-paper photo archives, a durable background photo queue, evidence-based concept assessment, and model-designed worksheets. Integrate the standalone worksheet skill; add English output-language rules and model-HTML answer labels. Fix scoped Git commits, selected-only publishing, and deployment tracking. Validated with 25 regression tests. Archive initialization and some legacy labels remain China-specific; English PDF visual testing and learner-outcome validation remain outstanding.","fileCount":51,"zipByteSize":134680},{"version":"0.2.14","createdAt":"2026-06-29T05:36:17.829Z","changelog":"Optimize daily grading workflow with compact active context, diagnosis validation, run logging, subagent boundary, and deferred grading push.","fileCount":40,"zipByteSize":96438},{"version":"0.2.13","createdAt":"2026-05-29T02:25:39.169Z","changelog":"Support configurable local IANA timezone for OpenClaw scheduled reminder jobs.","fileCount":35,"zipByteSize":80658},{"version":"0.2.12","createdAt":"2026-05-29T02:22:32.139Z","changelog":"Add OpenClaw scheduled reminder setup with automation config and cron registration fallback commands.","fileCount":35,"zipByteSize":80377},{"version":"0.2.11","createdAt":"2026-05-29T02:08:21.293Z","changelog":"Add machine-readable learning workspace config plus automatic pull/commit/push and Pages publishing guidance for configured personal learning repositories.","fileCount":34,"zipByteSize":75677},{"version":"0.2.10","createdAt":"2026-05-22T04:34:45.986Z","changelog":"Clarify the ClawHub summary with the project origin and English-only metadata.","fileCount":31,"zipByteSize":66116},{"version":"0.2.9","createdAt":"2026-05-22T04:32:19.806Z","changelog":"Improve ClawHub-facing summary metadata with English-first copy and Chinese helper text.","fileCount":30,"zipByteSize":64526}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17eh48qh47mdh81192axy3h3986z20y:zhizhi-math-coach","setupComplexity":"low","setupSteps":["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.","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":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linzi007-zhizhi-math-coach/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linzi007-zhizhi-math-coach/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linzi007-zhizhi-math-coach/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-linzi007-zhizhi-math-coach/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-linzi007-zhizhi-math-coach/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-linzi007-zhizhi-math-coach/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T10:45:10.909Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linzi007-zhizhi-math-coach/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linzi007-zhizhi-math-coach/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linzi007-zhizhi-math-coach/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linzi007-zhizhi-math-coach/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-10T08:08:37.510Z","emptyReason":null},"readme":"Skill: Zhizhi Math Coach\n\nOwner: linzi007\n\nSummary: Grade math papers, explain mistakes, and track learning\n\nTags: china:0.3.1, education:0.3.1, latest:0.3.1, math:0.3.1, parenting:0.3.1, worksheet:0.3.1\n\nVersion history:\n\nv0.3.1 | 2026-10-01T08:59:35.622Z | user\n\nClarify integration with @linzi007/zhizhi-math-worksheet: same-agent handoff of selected questions, scope and language preferences; return PDFs, source mappings and review status before resuming authorized records or sync. Document companion installation in the same scope. No automatic dependency installation or new background permissions.\n\nv0.3.0 | 2026-10-01T08:40:37.559Z | user\n\nAdd complete-paper photo archives, a durable background photo queue, evidence-based concept assessment, and model-designed worksheets. Integrate the standalone worksheet skill; add English output-language rules and model-HTML answer labels. Fix scoped Git commits, selected-only publishing, and deployment tracking. Validated with 25 regression tests. Archive initialization and some legacy labels remain China-specific; English PDF visual testing and learner-outcome validation remain outstanding.\n\nv0.2.14 | 2026-06-29T05:36:17.829Z | user\n\nOptimize daily grading workflow with compact active context, diagnosis validation, run logging, subagent boundary, and deferred grading push.\n\nv0.2.13 | 2026-05-29T02:25:39.169Z | user\n\nSupport configurable local IANA timezone for OpenClaw scheduled reminder jobs.\n\nv0.2.12 | 2026-05-29T02:22:32.139Z | user\n\nAdd OpenClaw scheduled reminder setup with automation config and cron registration fallback commands.\n\nv0.2.11 | 2026-05-29T02:08:21.293Z | user\n\nAdd machine-readable learning workspace config plus automatic pull/commit/push and Pages publishing guidance for configured personal learning repositories.\n\nv0.2.10 | 2026-05-22T04:34:45.986Z | user\n\nClarify the ClawHub summary with the project origin and English-only metadata.\n\nv0.2.9 | 2026-05-22T04:32:19.806Z | user\n\nImprove ClawHub-facing summary metadata with English-first copy and Chinese helper text.\n\nv0.2.8 | 2026-05-22T03:16:25.554Z | user\n\nAdd a project origin note explaining that the skill was created to help Zhizhi, a first-grade child, with math tutoring and to support parents with similar needs.\n\nv0.2.7 | 2026-05-22T02:54:14.510Z | user\n\nAdd PDF-first worksheet delivery plus explicit GitHub cloud sync and Pages setup guidance with parent-friendly instructions.\n\nv0.2.6 | 2026-05-20T03:53:29.740Z | user\n\nImprove OpenClaw onboarding docs with quick reference, first-use checklist, and clearer Skill-to-Plugin roadmap.\n\nv0.2.5 | 2026-05-19T03:29:12.172Z | user\n\nAuto-publish generated worksheet pages, rebuild the public index with all worksheets and status columns, wait for GitHub Actions deployment, and document direct-push ruleset settings.\n\nv0.2.4 | 2026-05-19T02:47:34.160Z | user\n\nAdd public-repository GitHub Pages guidance, branch-safety notes, and a helper for creating the GitHub Actions Pages workflow.\n\nv0.2.3 | 2026-05-19T02:23:46.790Z | user\n\nPrefer repository Deploy key setup for GitHub sync, add public-key generation helper, and document first-reply and publish-time authorization guidance.\n\nv0.2.2 | 2026-05-18T14:03:39.728Z | user\n\nAdd GitHub sync authorization guidance, fine-grained token permission recommendations, and plain-git preflight checks.\n\nv0.2.1 | 2026-05-18T09:49:49.980Z | user\n\nDocument recommended model capabilities and rationale: use a vision-capable frontier reasoning model for worksheet photos, handwriting uncertainty, long-context learning records, structured worksheet specs, geometry, and complex word problems.\n\nv0.2.0 | 2026-05-18T09:34:41.440Z | user\n\nAdd personal learning workspace initializer; clarify ClawHub user setup, workspace/data boundaries, and GitHub sync guidance; keep installed skill bundles out of personal learning repositories by default.\n\nv0.1.0 | 2026-05-18T05:55:36.918Z | user\n\nInitial public skill release\n\nArchive index:\n\nArchive v0.3.1: 51 files, 135005 bytes\n\nFiles: agents/openai.yaml (311b), assets/worksheet/a4-print.css (1150b), assets/worksheet/a4-single.html (3938b), assets/worksheet/question-types.json (3785b), references/automation-openclaw.md (3642b), references/complex-problem-generation.md (1292b), references/curriculum-alignment.md (1919b), references/daily-grading-workflow.md (6757b), references/geometry-generation.md (3932b), references/github-pages-publishing.md (7122b), references/github-sync-authorization.md (9952b), references/grading-diagnosis-rubric.md (3754b), references/knowledge-point-explanations.md (1296b), references/openclaw-quickstart.md (6573b), references/photo-intake.md (9312b), references/progress-tracking.md (2713b), references/relapse-handling.md (1821b), references/school-calendar.md (1873b), references/student-profile-template.md (1483b), references/word-problem-variant-design.md (2754b), references/worksheet-generation.md (11074b), references/worksheet-standards.md (3766b), references/worksheet-strategies.md (2197b), scripts/build_grading_context.py (9952b), scripts/check_git_sync.py (6069b), scripts/configure_learning_workspace.py (6573b), scripts/generate_visual_practice.py (5949b), scripts/generate_worksheet.py (20020b), scripts/geometry_primitives.py (8424b), scripts/git_scope.py (1844b), scripts/grading_followup.py (5541b), scripts/init_learning_workspace.py (17810b), scripts/knowledge_assessment.py (5446b), scripts/learning_workspace_config.py (6985b), scripts/model_worksheet.py (6308b), scripts/photo_jobs.py (7373b), scripts/prepare_github_deploy_key.py (7683b), scripts/publish_and_wait_pages.py (11823b), scripts/publish_html_site.py (17393b), scripts/record_grading_diagnosis.py (27627b), scripts/run_log.py (949b), scripts/setup_github_pages_workflow.py (3736b), scripts/setup_scheduled_tasks.py (10843b), scripts/sync_learning_repo.py (8544b), scripts/validate_diagnosis_payload.py (10858b), scripts/validate_worksheet_spec.py (4789b), scripts/worksheet_preview.py (1726b), scripts/workspace_transaction.py (3036b), skill-card.md (2336b), SKILL.md (37029b), _meta.json (136b)\n\nFile v0.3.1:SKILL.md\n\n---\nname: zhizhi-math-coach\ndescription: \"Primary-school math coaching: grade worksheet photos, document full papers, track evidence-based knowledge mastery, explain mistakes and plan follow-up practice. Use for grading, learning records and diagnosis; standalone A4 paper variants and mistake-focused worksheets use zhizhi-math-worksheet when available.\"\n---\n\n# Zhizhi Math Coach\n\n## Language And Regional Scope\n\nReply in the user's language unless they specify another. Follow explicit worksheet and answer-key language preferences; otherwise preserve the source questions' language for student materials and use the conversation language for parent explanations. Localize generated headings and directions, not just the questions. Do not produce bilingual pages unless requested.\n\nLanguage does not establish a country's grade levels, school dates, textbook, currency, units, or timezone. Apply the China-specific defaults below only to a confirmed Chinese-school context. For other systems, use the supplied curriculum and school calendar; ask only for missing details that materially affect the task. Never convert grade names across systems by guessing.\n\nThe bundled archive initializer, record summaries, and older fixed question templates still contain Chinese labels and China-specific defaults. They are not fully localized. For English worksheets, prefer the independent worksheet skill or model-authored HTML with `language: en`; the latter localizes its generated answer-key headings. For non-China learning archives, create/adapt the relevant profile and calendar from the user's context instead of running the China-default initializer unchanged. Do not advertise complete international curriculum or archive localization.\n\n## Skill Boundary\n\n`zhizhi-math-coach` owns grading, explanations, full-paper archives, knowledge assessment and configured background/sync work. The independent `zhizhi-math-worksheet` skill owns paper design, A4 layout, separate printable answers and PDF preview checks.\n\nFor a request that only asks for a paper, use the installed `zhizhi-math-worksheet` instructions when available, before the learning-record loop below. Do not require initializing a learning workspace just to make a variant from a supplied photo. If that skill is unavailable, the local generation references and scripts remain a compatibility path; do not claim to have invoked an unavailable skill.\n\nFor grading followed by practice, complete the requested diagnosis, select relevant questions, then pass a question list with complete stems, options and necessary diagram descriptions. Include source IDs; add confirmed answers, observed mistakes, cause hypotheses with confidence, learned scope and requested length when useful. Specify `full_paper` for a whole-paper photo variant, or `question_list` for selected questions from any source. Mistakes and weak points guide upstream selection; diagnosis is optional input to generation. The worksheet skill returns local artifacts and the private question/answer mapping; this coach handles any already-configured recording, sync or publication afterward. Generation alone is never mastery evidence.\n\nThe companion's registry identity is `@linzi007/zhizhi-math-worksheet`; this skill is `@linzi007/zhizhi-math-coach`. When both are visible to the same agent, a request to this coach can complete grading and worksheet generation in one conversation. Load the companion's actual installed `SKILL.md` from the skill catalog before following it; do not require another user message, spawn another agent, or assume a sibling filesystem path. Include requested student/answer languages and the output directory in the handoff. Resume here with the returned files, source mappings and review status; record the worksheet as generated, not completed by the student. Do not loop back into generation during the return step.\n\nInstalling or updating this package does not automatically install the companion. If it is missing, use the compatibility workflow for the current task and mention the optional companion only when useful. For installation help, use `openclaw skills install @linzi007/zhizhi-math-worksheet` in the same agent scope; match an existing global install with `--global`. Do not install a package merely because a grading task references it.\n\n## Core Loop\n\nUse a local evidence loop for every task:\n\n1. Read `.zhizhi-math-coach/config.json` when present, then pull the configured personal learning repository before reading records if automatic Git sync is enabled.\n2. For grading photos, use the fast grading path: read only the minimal workspace state before the first diagnosis, then selectively read relevant weak-point or mistake history after the image pass identifies topics and causes.\n3. Resolve grade, term, textbook, and exam/break scope from the learner's configured school system and local rules; do not apply another region's calendar by default.\n4. Accept completed paper photos, teacher-marked work, generated worksheets, or direct questions. For photos, read `references/photo-intake.md`: preserve the originals, answer the immediate grading request, then complete the full-paper archive through the queued worker or current session. Do not retain only wrong questions.\n5. Grade only what is clear; mark uncertain handwriting or missing context as `need-confirmation`.\n6. Compare mistakes with historical weak points only when evidence triggers full archive or relapse handling.\n7. Explain the correction in parent-friendly language, and include a shorter student-facing version when useful.\n8. Generate short validation practice for the cause, not just the surface topic.\n9. Tag all visible questions with knowledge points and evidence confidence; use the recorder to document correct/incorrect/unanswered/uncertain items, update per-concept assessments, and produce dated follow-up suggestions. Update durable weak-point status only when evidence supports it.\n10. If automatic Git sync, Pages publishing, or scheduled reminders are enabled in `.zhizhi-math-coach/config.json`, sync/publish/register supported automation without asking again after local files are written.\n\n## Expected Workspace\n\nUse these paths in the user's personal learning project unless they provide different names. The project repository may be public or private; do not assume either.\n\n- `.zhizhi-math-coach/config.json`: machine-readable workspace role, Git sync, GitHub Pages publishing, and scheduled reminder settings. This file is the source of truth for whether the parent has already enabled automatic pull/commit/push, Pages publishing, and OpenClaw cron registration.\n- `memory/long-term.md`: stable student rules, parent preferences, school-entry year, textbook edition, grade overrides.\n- `memory/active-context.md`: compact current learning context for daily grading. Keep it small enough for every photo-grading task.\n- `memory/short-term.md`: current observations, active priorities, pending checks.\n- `memory/local-memory-rules.md`: read/write/promotion rules for memory.\n- `curriculum/profile.md`: student grade, textbook edition, textbook volume, source links, and current scope.\n- `curriculum/scope.md`: unit-to-knowledge-point map for the current textbook.\n- `curriculum/progress.md`: school progress, learned/not-yet-learned topics, and exam scope.\n- `curriculum/school-calendar.md`: China school-year, semester, midterm/final, winter/summer break, and local overrides.\n- `knowledge-points/<topic-slug>.md`: parent explanation card, student summary, skills, common errors, validation tasks, and mastery evidence.\n- `weak-points/<topic-slug>.md`: long-lived weak-point records.\n- `mistakes/index.md`: mistake-book schema, semester ranges, review rules.\n- `mistakes/school-mistakes.md`: school papers, weekly tests, official homework.\n- `mistakes/system-mistakes.md`: worksheets generated by this system.\n- `records/learning-progress.md`: dated progress dashboard.\n- `records/knowledge-mastery.md` and `records/knowledge-state.json`: conservative per-concept assessments with counts and evidence.\n- `records/next-practice.json`: dated follow-up suggestions consumed by the compact context.\n- `.zhizhi-math-coach/photo-jobs/`: durable photo jobs and worker status.\n- `uploads/photo-jobs/`: originals preserved before foreground grading.\n- `records/YYYY-MM-DD-<source>-diagnosis.md`: one diagnosis per paper/photo batch/wrong-question batch.\n- `worksheets/YYYY-MM-DD-<topic-slug>/worksheet-spec.json`: compact worksheet source.\n- `worksheets/YYYY-MM-DD-<topic-slug>/worksheet.html`: child-facing printable worksheet.\n- `worksheets/YYYY-MM-DD-<topic-slug>/worksheet.pdf`: child-facing printable PDF for direct file delivery.\n- `worksheets/YYYY-MM-DD-<topic-slug>/answer-key.md`: answers, grading, and next-step rules.\n\nFor a Chinese-school learning project that is not initialized yet, the bundled initializer can be run from the workspace root. Its defaults are regional; other school systems need an adapted profile and calendar as described above:\n\n```bash\npython3 {baseDir}/scripts/init_learning_workspace.py \\\n  --workspace . \\\n  --student-name <nickname> \\\n  --school-entry-year <YYYY> \\\n  --grade <一年级> \\\n  --semester <上学期|下学期> \\\n  --textbook-edition <人教版> \\\n  --textbook-volume <一年级下册>\n```\n\nThe initializer creates missing files only by default. Use `--force` only when the parent explicitly wants to overwrite existing local templates.\n\n## Recommended Model Capability\n\nPrefer a frontier multimodal reasoning model for this skill. The model should support:\n\n- image understanding for worksheet photos, handwritten answers, and teacher-marked papers;\n- long-context reading across local `memory/`, `weak-points/`, `records/`, `curriculum/`, and worksheet files;\n- reliable tool use and local file edits;\n- structured JSON/text output for worksheet specs, diagnosis records, and progress updates;\n- configurable reasoning effort.\n\nWhy this matters:\n\n- Photo grading is common: parents will upload exercise sheets, teacher corrections, or handwritten answers. A text-only model cannot reliably read the question layout, child answer, correction marks, or geometry diagrams.\n- Handwriting and low-quality images need uncertainty handling: the model must decide when to grade, when to mark `need-confirmation`, and when to ask for a clearer photo.\n- Long-term learning follow-up needs context: weak-point repair depends on comparing current mistakes with `memory/`, `records/`, `mistakes/`, and `weak-points/` history.\n- Worksheet generation needs structure: the skill writes compact `worksheet-spec.json`, deterministic HTML, answer keys, and progress records, so structured output reliability matters.\n- Hard math tasks need reasoning: geometry, multi-step word problems, exam review planning, and transfer-failure diagnosis require more than shallow pattern matching.\n\nRecommended settings:\n\n- Use the configured frontier multimodal reasoning model for daily work. GPT-6 Astra supports text/image inputs and text output; generating a raster image directly requires a separate image-generation capability. Do not silently change the configured model or assume an unavailable image tool.\n- Hard cases: use higher reasoning for multi-image grading, low-confidence handwriting, complex word problems, geometry, midterm/final review planning, or memory consolidation.\n- Fast/simple tasks: use lower reasoning for reminders, checklist updates, or formatting existing records.\n- Avoid small text-only models for grading photos, geometry diagrams, or updating long-term learning records.\n\nPerformance target:\n\n- For one clear worksheet photo or a small wrong-question batch, produce the parent-facing grading summary before deep history consolidation.\n- Keep the initial read set small. Delay weak-point relapse comparison, reusable explanation-card updates, and long-term memory promotion until after the image evidence is understood.\n- Prefer compact JSON plus bundled scripts over generating long ad hoc Python or shell write scripts.\n- Default daily grading is one-turn fast grading plus light recording. Do not ask the parent to say \"记录一下\" after an ordinary photo unless the workspace is missing or the evidence is too unclear to record.\n- If evidence triggers full archive, upgrade automatically and keep history reads selective. Otherwise write the light record and avoid deep consolidation.\n\n## Workspace Config And Automatic Sync\n\nAt the start of every meaningful task in a personal learning workspace:\n\n1. Read `.zhizhi-math-coach/config.json` if it exists.\n2. If `workspace_role` is `personal-learning-data` and `git_sync.enabled` plus `git_sync.auto_pull_before_task` are true, run:\n\n```bash\npython3 {baseDir}/scripts/sync_learning_repo.py \\\n  --workspace . \\\n  --mode before-task\n```\n\n3. Then read only the task-specific local files. Do not recursively read whole `memory/`, `records/`, `mistakes/`, `weak-points/`, or `worksheets/` directories. Use the fast grading path for photos and use filename/topic searches before opening history files.\n\nIf `automation.enabled` and `automation.auto_register_when_supported` are true, and no scheduled jobs are recorded yet, run:\n\n```bash\npython3 {baseDir}/scripts/setup_scheduled_tasks.py \\\n  --workspace . \\\n  --enable-config \\\n  --auto-register\n```\n\nThis script must detect whether `openclaw cron` is available. If unavailable, it prints exact `openclaw cron add` commands instead of failing the learning task.\n\nUse the local IANA timezone stored in `automation.timezone` for scheduled reminders. Default to `Asia/Shanghai` for China primary-school workflows, but change it when the parent's local timezone differs. Do not rely on an OpenClaw server's system timezone.\n\nAfter local files are changed:\n\n- If `git_sync.enabled`, `git_sync.auto_commit_after_task`, and `git_sync.auto_push_after_task` are true, run:\n\n```bash\npython3 {baseDir}/scripts/sync_learning_repo.py \\\n  --workspace . \\\n  --mode after-task \\\n  --message \"Update learning data\"\n```\n\n- Do not ask the parent to confirm pull, commit, or push again when these config flags are already true. Treat the config as the durable consent and state for this personal learning repository.\n- For grading tasks, pass `--task-kind grading`; if `git_sync.defer_push_after_grading` is true, the sync script commits locally and skips push until a later explicit sync/review/publish task.\n- If the sync script fails because credentials, rulesets, or conflicts block Git, keep the local task result, report the exact failure, and give the Deploy-key or conflict-resolution next step.\n\nWhen a repository has been configured after Git authorization succeeds, persist the state with:\n\n```bash\npython3 {baseDir}/scripts/check_git_sync.py \\\n  --workspace . \\\n  --check-push \\\n  --write-config \\\n  --auto-sync \\\n  --sync-full-learning-data \\\n  --public-repository-accepted\n```\n\nWhen Pages is configured, persist Pages auto-publishing with:\n\n```bash\npython3 {baseDir}/scripts/setup_github_pages_workflow.py \\\n  --workspace . \\\n  --public-repository-accepted\n```\n\nIf `.zhizhi-math-coach/config.json` is missing, do not assume automatic sync from README text alone. Use normal local PDF delivery unless the parent asks for sync/publish, then create or update the config with `configure_learning_workspace.py`, `check_git_sync.py --write-config`, or `setup_github_pages_workflow.py`.\n\n## Trigger And Sync Boundary\n\nThis skill is triggered by the user's OpenClaw request, such as `$zhizhi-math-coach 批改...` or `$zhizhi-math-coach 出一张...`, while the working directory is the personal learning project.\n\nFor GitHub sync, Pages, Deploy keys, public links, or cloud backup requests, read `references/github-sync-authorization.md` first, then `references/github-pages-publishing.md` only when Pages/public links are requested. Do not grade or generate a worksheet unless the user also asks for that. Return only SSH public keys, never private keys.\n\nFor scheduled-task setup phrases such as `开启定时任务`, `配置每日提醒`, `配置每周复盘`, `开启自动复习提醒`, or `配置 OpenClaw cron`, read `references/automation-openclaw.md` and configure reminders with `setup_scheduled_tasks.py`. Scheduled tasks default to reminders and suggestions only; do not enable automatic worksheet generation or record writes unless the parent explicitly asks.\n\nFor first-use local setup checks, read `references/openclaw-quickstart.md`. Do not mention GitHub setup during ordinary grading or worksheet generation unless the parent asks for cloud sync, push, public links, Pages, or a publish preflight fails.\n\nAlways treat the current workspace root as the personal learning project root for `memory/`, `weak-points/`, `mistakes/`, `records/`, `curriculum/`, `knowledge-points/`, `worksheets/`, and `site/`. The reusable skill repository only provides instructions, scripts, references, templates, and sanitized examples.\n\nIf the current workspace appears to be the reusable source repository `zhizhi-math-coach-openclaw` (for example it contains `docs/openclaw-release.md` and `examples/student-workspace/`), warn before writing student learning data. Do not warn merely because a personal workspace has an installed `skills/zhizhi-math-coach/` bundle from ClawHub. Only write student data into the source repository when the user explicitly says it is the intended personal learning workspace or the task is skill development with sanitized examples.\n\nDo not assume background sync unless `.zhizhi-math-coach/config.json` enables it. Local files are changed by the current task only:\n\n- grading or diagnosis may write `records/`, `mistakes/`, `weak-points/`, and evidence-backed `memory/` updates;\n- worksheet generation may write `worksheets/<date-topic>/worksheet-spec.json`, `worksheet.html`, `worksheet.pdf`, and `answer-key.md`;\n- publishing may write `site/` and `worksheets/<date-topic>/publish.json`.\n- GitHub Pages setup may write `.github/workflows/pages.yml` when the parent has chosen a public repository, selected GitHub Actions as the Pages source, and asked OpenClaw to set up publishing.\n\nWhen publishing, publish only the selected worksheet paths and rebuild `site/index.html` from selected and previously published worksheets, sorted by date descending. Do not publish unselected drafts just to rebuild the index. Include only public-safe metadata: date, practice status, title, child-facing file links, topic, grade, item count, and completion summary. Infer status from `worksheets/status.md` when available; do not expose answers or diagnosis details in `site/`.\n\nPDF is the default worksheet delivery format. After worksheet generation, return or send `worksheet.pdf` first when it exists. A model-authored PDF layout program can generate it without a browser. If no PDF generation route is available, return the local HTML when available and accurately describe the missing dependency. When the parent asks for a paper and answers, provide a separate `answer-key.pdf` too.\n\nGitHub sync and GitHub Pages are advanced cloud features, not required for normal use. If GitHub sync or Pages is configured and enabled in `.zhizhi-math-coach/config.json`, follow the config flags and the relevant sync/publishing reference.\n\nDo not run `git add`, `git commit`, or `git push` unless the parent explicitly asks to sync, publish, push, commit to GitHub, send a public link, or `.zhizhi-math-coach/config.json` enables automatic sync or automatic Pages publishing. When sync is requested or newly configured, read `references/github-sync-authorization.md` first and run the bundled preflight before committing or pushing. Do not require GitHub CLI or provider-level token configuration; a repository-scoped SSH deploy key is the preferred setup. If authorization is missing, return the PDF/local file paths and setup guidance instead of treating generation as failed. If the personal repository is public, warn before committing sensitive learning records or answer keys unless the parent has explicitly accepted full public learning-data sync in `.zhizhi-math-coach/config.json`.\n\nSkill resources are relative to `{baseDir}`:\n\n- `references/grading-diagnosis-rubric.md`: grading and diagnosis fields.\n- `references/progress-tracking.md`: record templates and status values.\n- `references/relapse-handling.md`: how to handle repeated mistakes after repair.\n- `references/curriculum-alignment.md`: textbook, China grade/semester, and copyright-safe curriculum alignment.\n- `references/school-calendar.md`: China school-year, semester, exam window, and holiday phase rules.\n- `references/knowledge-point-explanations.md`: parent explanation card and student summary rules.\n- `references/worksheet-strategies.md`: supported paper-generation strategies and confirmation questions.\n- `references/worksheet-generation.md`: low-token worksheet workflow.\n- `references/word-problem-variant-design.md`: how to design non-shallow word-problem variants.\n- `references/complex-problem-generation.md`: complex word-problem and review safeguards.\n- `references/geometry-generation.md`: optional reusable diagram tools and geometry checks.\n- `references/automation-openclaw.md`: scheduled reminders, channels, and automation boundaries.\n- `references/openclaw-quickstart.md`: first-use checklist, common prompts, Pages-ready checklist, and ruleset summary.\n- `references/github-pages-publishing.md`: public child-facing PDF/HTML worksheet publishing rules.\n- `references/github-sync-authorization.md`: GitHub SSH/token authorization, preflight checks, and sync boundaries.\n- `references/worksheet-standards.md`: child-facing printable worksheet rules.\n- `references/student-profile-template.md`: starter profile format.\n- `scripts/generate_worksheet.py`: generate worksheet HTML, student-facing PDF, and answer key from JSON.\n- `scripts/check_git_sync.py`: preflight whether the current machine can reach and push the personal GitHub repository.\n- `scripts/configure_learning_workspace.py`: create or update `.zhizhi-math-coach/config.json` for a personal learning repository.\n- `scripts/prepare_github_deploy_key.py`: generate a repository-scoped SSH deploy key and public-key setup instructions for GitHub Deploy keys.\n- `scripts/setup_github_pages_workflow.py`: create `.github/workflows/pages.yml` for publishing `site/` through GitHub Actions.\n- `scripts/setup_scheduled_tasks.py`: enable automation config and register OpenClaw cron reminder jobs when `openclaw cron` is available.\n- `scripts/sync_learning_repo.py`: pull, commit, and push configured learning-data changes without asking again when automatic sync is enabled.\n- `references/daily-grading-workflow.md`: foreground grading, automatic archive selection, validation, recording and sync.\n- `references/photo-intake.md`: full-paper evidence schema, knowledge assessment, durable jobs and the cron worker.\n- `scripts/photo_jobs.py`: enqueue, claim, heartbeat, finish, retry and inspect photo jobs.\n- `scripts/generate_visual_practice.py`: generate diagram-driven practice with verified matching answers.\n- `scripts/build_grading_context.py`: build one compact grading context from config, active context, and curriculum profile.\n- `scripts/validate_diagnosis_payload.py`: validate diagnosis JSON before writing records.\n- `scripts/record_grading_diagnosis.py`: write diagnosis, mistake-book, progress, weak-point, and optional memory updates from one compact JSON payload.\n- `scripts/run_log.py`: shared helper for `.zhizhi-math-coach/run-log.jsonl`.\n- `scripts/init_learning_workspace.py`: initialize a personal learning repository after the skill is installed.\n- `scripts/validate_worksheet_spec.py`: validate worksheet JSON without writing outputs.\n- `scripts/publish_html_site.py`: publish child-facing worksheet HTML/PDF into a GitHub Pages `site/` directory.\n- `scripts/publish_and_wait_pages.py`: publish `site/`, commit/push public-safe files, wait for GitHub Actions Pages deployment, and print ready URLs.\n- `assets/worksheet/question-types.json`: reusable worksheet item types.\n- `assets/worksheet/a4-single.html`: printable HTML template.\n\n## Before Grading\n\nRead `references/daily-grading-workflow.md`; for photos, also read `references/photo-intake.md`.\n\nFor photo input, preserve the original first and prioritize the parent's requested correction/explanation in the foreground. Document all visible questions in the full archive, including correct items. If `automation.allow_photo_archive` is enabled and the cron consumer is registered, let the worker complete the queued archive. Otherwise process the queue in the current session or a supported isolated worker. Never claim a background session exists merely because a file was queued.\n\nBuild compact context first:\n\n```bash\npython3 {baseDir}/scripts/build_grading_context.py --workspace . --format md\n```\n\nThe context includes recent knowledge assessment, due review suggestions, and warnings about stale active context. Use existing concept IDs. After reading the image, assign knowledge points and per-concept evidence from the actual question and written steps. Do not infer mastery from wrong answers alone or count hinted answers as independent performance.\n\nFor a queued photo, use `photo_jobs.py claim` and `finish` as documented in `photo-intake.md`; do not also record it separately. A photo worker may write its claimed local archive through `finish`, which performs validation, recording and evidence aggregation. It must not publish or generate additional worksheets unless separately configured.\n\nFor direct text or synchronous structured diagnosis:\n\n```bash\npython3 {baseDir}/scripts/record_grading_diagnosis.py \\\n  --workspace . --mode auto --input diagnosis-update.json\n```\n\n`auto` selects light recording or full archive from repeated confirmed causes, matching historical weak points and explicit updates. The script reports its reasons, retains the complete supplied evidence, and deduplicates retries. Explicit light/full modes remain available. Use `fast_grade_only` at the agent level when the parent says not to record; do not enqueue or invoke the recorder then.\n\nWhen Git auto-sync is enabled after recording, call `sync_learning_repo.py --mode after-task --task-kind grading`. Do not record the same batch twice to retry synchronization.\n\n## Before Explaining A Knowledge Point\n\nRead the relevant `knowledge-points/<topic-slug>.md` when it exists. If it does not exist, create the explanation in the same structure and recommend saving it in the user's personal learning project:\n\n1. Parent explanation script.\n2. Student-facing short version.\n3. Doing tips.\n4. Common errors and quick checks.\n5. Mastery evidence: can explain, can do same-structure items, can do variants, and can still solve after spacing.\n\nDo not use long textbook excerpts. Use textbook scope and terminology, then explain in original words.\n\n## Before Creating Practice\n\nWhen `zhizhi-math-worksheet` is available, use the boundary and handoff above. Read only the context needed for the requested paper; an attached full-paper reference normally supplies its own scope. For mistake-focused practice, supply known evidence without re-reading unrelated history.\n\nFor the compatibility path when the standalone skill is unavailable, selectively read relevant existing files:\n\n1. `memory/local-memory-rules.md`\n2. `memory/long-term.md`\n3. `memory/short-term.md`\n4. `curriculum/school-calendar.md`\n5. `curriculum/profile.md`\n6. `curriculum/scope.md`\n7. `curriculum/progress.md`\n8. The relevant `weak-points/*.md`\n9. The relevant `knowledge-points/*.md`\n10. `references/worksheet-strategies.md`\n11. `references/worksheet-standards.md`\n12. `references/worksheet-generation.md`\n13. `references/progress-tracking.md`\n\nIf the parent only says \"出一张练习卷\", use the latest confirmed curriculum scope, knowledge assessment and due reviews; default to a short 6–8 question, roughly 10-minute PDF and state these assumptions. Ask only if the missing scope would materially change the questions. Do not infer unlearned topics from grade alone. For \"按最近情况出\", prioritize weak concepts and due spaced reviews, and include a few maintenance questions for concepts already correct.\n\nIf the parent supplies a paper photo and asks for a similar variant, use that paper's concepts, section structure and approximate length as the brief; do not replace it with the short-drill default. Deliver a student paper and separate printable answers. Infer layout density from the reference and keep personal identifiers out of generated public examples.\n\nFor word problems, also read `references/word-problem-variant-design.md` and `references/complex-problem-generation.md`.\n\nDefault to model-designed worksheets as described in `references/worksheet-generation.md`: use the learning context to design the full paper, then apply the shared A4 print profile. Deliver printable PDF and page previews; do not ask the parent to choose rendering technologies. Question types and layout are not limited to the built-in registry. Read `references/geometry-generation.md` only when an optional reusable diagram/template tool helps. Preserve the learning objective and verify diagrams against answers. If using an actual image-generation tool, verify its text and math separately and state any missing capability honestly.\n\nFor model-authored HTML and optional template papers, use this validation/export workflow. Direct-PDF programs instead follow the separate review and rendering steps in `references/worksheet-generation.md`:\n\n```bash\npython3 {baseDir}/scripts/validate_worksheet_spec.py \\\n  worksheets/YYYY-MM-DD-topic/worksheet-spec.json\n\npython3 {baseDir}/scripts/generate_worksheet.py \\\n  worksheets/YYYY-MM-DD-topic/worksheet-spec.json\n```\n\nThe generator writes `worksheet.html`, `worksheet.pdf` when Chrome/Chromium is available, and `answer-key.md`. Return or send `worksheet.pdf` as the primary worksheet artifact.\n\nIf the workspace has public Pages mode configured and the parent accepts public worksheet links, publish only the child-facing worksheet HTML/PDF and wait for deployment:\n\n```bash\npython3 {baseDir}/scripts/publish_and_wait_pages.py \\\n  worksheets/YYYY-MM-DD-topic \\\n  --workspace <personal-learning-workspace> \\\n  --base-url https://<github-user>.github.io/<repo>\n```\n\nIf the parent wants a local-only preview or GitHub sync is not ready, publish local `site/` files without pushing:\n\n```bash\npython3 {baseDir}/scripts/publish_html_site.py \\\n  worksheets/YYYY-MM-DD-topic \\\n  --workspace <personal-learning-workspace> \\\n  --base-url https://<github-user>.github.io/<repo>\n```\n\nWhen Pages auto-publishing succeeds, reply with the PDF path/file, Pages index URL, and worksheet URL. Otherwise reply with file paths, item count, target weak point, and setup guidance for publishing. Do not paste full worksheet HTML or full answer keys unless asked.\n\n## Teaching Defaults\n\n- Use concise language appropriate to the parent, following the language preferences above.\n- Start from meaning, drawing, counters, or place value before formulas when understanding is fragile.\n- Ask the child to say the rule in plain language before writing the equation.\n- Keep one main diagnostic target per short practice.\n- If the student can answer correctly but slowly, diagnose fluency separately from understanding.\n- Do not turn handwriting difficulty into a math test. Prefer circling, ticking, matching, or printed choices for classification.\n- Use textbooks or curriculum references for scope, but create original targeted practice.\n- When a parent says a repeated application model is already understood, switch to small mixed variants that test transfer.\n\n## China School Calendar Defaults\n\nApply only when the learner follows a Chinese school calendar; local overrides take precedence:\n\n- School year starts on September 1 and ends the next August.\n- September 1 to January 31: first semester.\n- February 1 to August 31: second semester.\n- Winter break and summer break are local overrides, not fixed national dates.\n- Midterm and final windows must be configurable per school.\n\nIf `school_entry_year: 2025`, the date `2026-05-18` is normally `一年级下学期`. Still check local overrides and actual school progress before deciding scope.\n\n## Mistake Handling\n\nEvery wrong or uncertain item should include:\n\n`date / school year / grade / semester / term phase / source type / source file / item number / question / student answer / correct answer / error type / likely cause / related knowledge point / related weak point / relapse judgment / re-practice status / follow-up`.\n\nFor review before midterms or finals, filter by semester first, then group by weak point, recurrence, and `re-practice status`.\n\n## Relapse Handling\n\nIf a similar mistake appears after a weak point was marked `understood`, `consolidating`, or `mastered`, do not create a new isolated weak point. Decide whether it is:\n\n- `relapse`: same cause failed again.\n- `transfer-failure`: familiar form works, changed wording or mixed context fails.\n- `spaced-forgetting`: the prior repair faded after a gap.\n- `one-off-slip`: isolated error with nearby evidence of mastery.\n\nUpdate the old weak-point record with the new evidence and choose practice based on the recurrence type.\n\n## Worksheet Strategies\n\nSupported strategies:\n\n- `wrong_question_variant`: turn an existing wrong question into meaningful variants.\n- `weak_point_drill`: focus one weak point.\n- `exam_mistake_review`: midterm/final review weighted by real mistakes.\n- `relapse_repair`: repair relapse, transfer failure, or spaced forgetting.\n- `spaced_review`: small due review for old weak points.\n- `transfer_check`: changed wording/scenario/condition order.\n- `post_explanation_check`: 3 to 6 questions after explanation.\n- `diagnostic_probe`: separate concept, reading, modeling, calculation, and checking causes.\n- `mixed_maintenance`: current unit plus old weak points plus fluency.\n- `fluency_speed`: facts and speed when understanding is already stable.\n- `contrast_discrimination`: similar-looking items with different models.\n- `geometry_drill`: targeted geometry practice, with diagrams chosen to test the intended concept.\n\n## Automation Boundary\n\nScheduled OpenClaw tasks should default to reminders and suggestions in the configured local timezone:\n\n- Daily 20:30 local time: due practice, pending uploads, stale short-term observations.\n- Sunday 20:00 local time: weekly progress review and next-week suggestions.\n- End of semester: summary and holiday review pool.\n- Winter/summer break: weekly review suggestions.\n\nDo not let scheduled tasks automatically change weak-point status, memory, or generate new worksheets unless the parent explicitly asked for that behavior.\n\nOpenClaw cron is not declared as a skill-install manifest. It is registered by running the bundled setup script after the parent enables scheduled tasks:\n\n```bash\npython3 {baseDir}/scripts/setup_scheduled_tasks.py \\\n  --workspace . \\\n  --enable-config \\\n  --auto-register \\\n  --timezone Asia/Shanghai\n```\n\nIf `openclaw` is not available on the current machine, the script prints the `openclaw cron add` commands for the provider or parent to run later.\n\nFeishu notifications should prefer GitHub Pages worksheet links when configured; keep answer keys and diagnosis records outside published `site/` output.\n\n## Output Rules\n\nWhen generating worksheets:\n\n- Keep `worksheet.html` child-facing and answer-free.\n- Generate and return `worksheet.pdf` first when available; it is the direct print/share artifact.\n- Keep answers, grading labels, explanation notes, and reassessment rules in `answer-key.md`.\n- Only child-facing `worksheet.html` and `worksheet.pdf` may be published to GitHub Pages. Do not publish answer keys, records, memories, weak-point histories, student photos, or textbook files.\n- Preserve the editable source and separate checked answer manifest. For the bundled HTML generator, the source is `worksheet-spec.json`; for direct PDF, retain the layout program and `answer-manifest.json`.\n- Let the model design the complete paper, using direct PDF authoring or `render_mode: model_html`; the registry is only for optional reusable templates.\n- Apply the A4 typography appropriate to the reference paper or short drill, as described in `references/worksheet-standards.md`. The bundled HTML generator uses `assets/worksheet/a4-print.css`. Deliver previews from the actual PDF.\n- Include name/date/time/score fields and enough working space.\n- Prefer clarity and targeted diagnosis over forcing exactly one A4 page.\n- Complex word problems and geometry items must include answer details and review status.\n\nWhen grading:\n\n- Lead with confirmed mistakes and high-confidence causes.\n- Separate reading, modeling, calculation, expression, and checking errors.\n- Use `confidence: high / medium / low`.\n- For low-confidence causes, give 1 to 2 quick verification questions.\n- Group repeated errors by cause and teach the cause once.\n\nFile v0.3.1:_meta.json\n\n{\n  \"ownerId\": \"kn7cxpw3e2e3tg37c248mvktxh86y35a\",\n  \"slug\": \"zhizhi-math-coach\",\n  \"version\": \"0.3.1\",\n  \"publishedAt\": 1790845175622\n}\n\nFile v0.3.1:references/automation-openclaw.md\n\n# OpenClaw Automation\n\n## Boundary\n\nScheduled tasks should default to reminders and suggestions. They should not automatically change weak-point status, memory, records, or generate new worksheets unless the parent has explicitly requested that behavior.\n\nOpenClaw cron jobs are not declared by a skill manifest at install time. Use the bundled setup script after the parent explicitly enables scheduled reminders. The script detects whether `openclaw cron` is available; if not, it prints the exact commands instead of failing the learning workflow.\n\n```bash\npython3 {baseDir}/scripts/setup_scheduled_tasks.py \\\n  --workspace <personal-learning-workspace> \\\n  --enable-config \\\n  --auto-register \\\n  --timezone Asia/Shanghai\n```\n\nThe setup writes `.zhizhi-math-coach/config.json`:\n\n- `automation.enabled`: scheduled reminders are allowed.\n- `automation.auto_register_when_supported`: register via `openclaw cron` when the CLI exists.\n- `automation.timezone`: IANA timezone used by `openclaw cron --tz`; use the parent's local timezone, for example `Asia/Shanghai`.\n- `automation.allow_record_writes`: default `false`.\n- `automation.allow_auto_worksheet_generation`: default `false`.\n\n## Recommended Schedule\n\n- Opt-in photo archival: every 5 minutes, claim at most one queued photo batch in an isolated multimodal session; see `photo-intake.md`.\n- Daily 20:30 local time: due review reminders, pending upload reminders, and stale short-term observations.\n- Sunday 20:00 local time: weekly progress review and next-week suggestions.\n- End of semester: generate a summary and holiday review pool.\n- Winter/summer break: weekly holiday review suggestions.\n\n## Suggested Task Outputs\n\n- due weak points;\n- pending worksheets not yet graded;\n- short explanation cards that may help parents;\n- suggested next worksheet strategy;\n- warnings about low-confidence or missing evidence.\n\n## Channels\n\nThe learning logic should not depend on a channel. Start with local records and OpenClaw conversation output.\n\nFor push delivery, use a channel adapter. Feishu/Lark is the default v1 recommendation when available because it supports chat, files, and operational workflows. DingTalk can be added later through a channel/plugin adapter if the environment supports it.\n\n## Safety\n\n- Do not send sensitive student files to public channels.\n- Do not push full answer keys into a child-facing chat.\n- Do not infer new mastery status from time alone.\n- Do not schedule automatic worksheet generation by default.\n- Do not auto-create cron jobs merely because the skill was installed; require an explicit setup trigger or existing automation config.\n\n## Photo Archive Worker\n\n```bash\npython3 {baseDir}/scripts/setup_scheduled_tasks.py \\\n  --workspace <personal-learning-workspace> \\\n  --enable-config --photo-worker --auto-register --timezone Asia/Shanghai\n```\n\n`--photo-worker` sets `automation.allow_photo_archive: true` and adds a `*/5 * * * *` isolated worker. Its write authorization applies only to explicitly queued photo batches. General reminder tasks remain read-only unless `allow_record_writes` is separately enabled. The worker documents all questions and updates per-knowledge-point evidence through `photo_jobs.py finish`; it does not enable automatic worksheet creation or publishing.\n\nThe queue has leases, heartbeat, capped retries and persistent failure details. Configure a multimodal model that can open the saved local images; a text-only cron model cannot perform the task. If the CLI/gateway is unavailable, printed commands are setup instructions, not a registered or running worker. Verify a real image run in the target environment.\n\nFile v0.3.1:references/complex-problem-generation.md\n\n# Complex Problem Generation\n\n## Purpose\n\nUse this reference for multi-step word problems, condition filtering, compare-after-intermediate problems, and exam review items.\n\n## Generation Rule\n\nAI may design the item, but the worksheet spec must preserve the structure:\n\n- problem type;\n- known quantities;\n- unknown quantity;\n- required conditions;\n- distractor or unused conditions;\n- intermediate quantity;\n- final operation;\n- answer sentence;\n- `answer_detail` with the full solving path.\n\n## Review Status\n\nUse one of:\n\n- `draft`: not ready to print.\n- `model_reviewed`: reviewed by another model or a second pass.\n- `human_review_needed`: print only after parent/teacher confirmation.\n- `approved`: ready to print.\n\nComplex items should not be printed when `review_status` is `draft` or missing.\n\n## Difficulty Control\n\nIf the target is reading or modeling, keep arithmetic easy enough not to hide the diagnosis.\n\nChange one or two dimensions at a time:\n\n- scenario;\n- final question wording;\n- condition order;\n- distractor condition;\n- intermediate quantity;\n- calculation load.\n\n## Answer Key\n\nFor multi-step items, `answer_detail` must show:\n\n- each intermediate value;\n- why a condition is used or ignored;\n- the final equation or comparison;\n- the final answer sentence and unit.\n\nFile v0.3.1:references/curriculum-alignment.md\n\n# Curriculum Alignment\n\n## Purpose\n\nUse curriculum files to keep grading, explanations, and worksheets aligned with the student's real school scope.\n\nThis project may reference external textbook indexes or local PDF paths in a personal learning workspace, but the public skill must not include textbook PDFs, screenshots, scans, OCR dumps, or copied problem sets.\n\n## Workspace Files\n\n- `curriculum/profile.md`: student grade, textbook edition, textbook volume, source references, and current unit.\n- `curriculum/scope.md`: unit and knowledge-point map.\n- `curriculum/progress.md`: learned/not-yet-learned topics, school progress, and exam scope.\n- `curriculum/school-calendar.md`: school-year, semester, exam, and holiday windows.\n\n## China Textbook Example\n\nFor a first-grade student using 人教版 mathematics, the personal profile can cite:\n\n```text\nTextbook source: https://github.com/TapXWorld/ChinaTextbook/tree/master/小学/数学/人教版\nTextbook volume: 一年级下册\n```\n\nUse that source to identify grade/volume and broad unit scope. Do not copy full textbook pages or exercises into the public repository.\n\n## Scope Rules\n\n- Daily practice should stay within learned content unless the parent explicitly asks for preview.\n- Midterm review should cover this semester's learned units and actual mistakes.\n- Final review should cover the whole semester, weighted by weak points and relapse history.\n- Winter break should repair first-semester weak points before previewing next semester.\n- Summer break should review the whole school year before previewing the next grade.\n\n## Output Rules\n\nWhen using curriculum context, state:\n\n- grade and semester;\n- textbook edition and volume;\n- current unit or scope;\n- whether the item is current review, remedial, transfer check, exam review, or preview.\n\nGenerate original diagnostic and practice items. Use textbook terms and scope, not copied textbook text.\n\nFile v0.3.1:references/daily-grading-workflow.md\n\n# Daily Grading Workflow\n\nUse this reference for worksheet photos, teacher-marked papers, wrong-question batches, and direct `question + student answer` grading. For image intake, full-paper evidence, knowledge assessment and asynchronous execution, `photo-intake.md` is the primary workflow.\n\n## One-Turn Modes\n\nDo not make the parent send a second message just to save an ordinary grading result.\n\n- Default recorder mode: `auto` (chooses light/full archive from evidence). Foreground feedback remains fast.\n- Use `fast_grade_only` only when the parent explicitly says `只批改`, `先不记录`, `不要落库`, or the workspace is not initialized.\n- Use `full_archive` when the parent explicitly asks for full recording/review, or when the evidence itself justifies it.\n\n`fast_grade_light_record` grades, returns the parent-facing summary, and writes a light local record in the same task. The light record may update `records/`, the relevant mistake book, and `memory/active-context.md`; it should not update global/user-level `MEMORY.md`, run broad history scans, or change old weak-point statuses.\n\nAuto-upgrade to `full_archive` when one or more of these are true:\n\n- Two or more wrong or uncertain items in the same batch point to the same cause or weak point.\n- A wrong item directly matches an active weak point in `memory/active-context.md` and looks like relapse, transfer failure, or spaced forgetting.\n- The evidence is a formal test, teacher-marked paper, phase review, midterm/final review, or parent-provided official school mistake set.\n- The batch gives high-confidence evidence for a new durable weak point, not just a one-off slip.\n- The parent explicitly asks for `完整记录`, `完整归档`, `纳入错题本`, `更新薄弱项`, `阶段性复盘`, or `做复盘`.\n\nWhen auto-upgrading, keep reads selective: start from the active context, then open only matching weak-point and mistake history. Do not update global/user-level `MEMORY.md` unless the update is about a stable workflow rule or the parent explicitly asks.\n\n## Context Build\n\nBefore grading, build one compact context bundle:\n\n```bash\npython3 {baseDir}/scripts/build_grading_context.py \\\n  --workspace . \\\n  --format md\n```\n\nThe context builder reads `.zhizhi-math-coach/config.json`, `memory/active-context.md`, and `curriculum/profile.md`, then returns a compact grading context and appends `.zhizhi-math-coach/run-log.jsonl`.\n\nOnly read fallback files such as `memory/long-term.md`, `memory/short-term.md`, `curriculum/progress.md`, or `records/learning-progress.md` when the context builder warns that `memory/active-context.md` is missing, stale, or incomplete.\n\nKeep `memory/active-context.md` under 2500 bytes. If it grows beyond that, summarize it before recording new evidence.\n\n## Foreground And Background\n\nSave original photos and return the urgent correction first. A registered OpenClaw cron consumer or supported isolated session can complete the queued full archive later; see `photo-intake.md`. If no worker runs, process it in the current session and do not claim it is running in the background.\n\nA worker receives one leased job, the saved images and compact context. It can open matching history and call `photo_jobs.py finish` to write its local archive. Keep writes tied to that claimed job, and leave unrelated files and public publishing alone. For direct text, use the recorder in the main session.\n\n## History Reads\n\nAfter the first image pass, choose the final recording mode from evidence:\n\n- `fast_grade_light_record`: skip history reads.\n- `full_archive`: use `rg -n \"<topic|cause|slug>\" weak-points mistakes records/learning-progress.md` or direct filenames to find relevant history. Open only matching files.\n\nRead `references/relapse-handling.md` only when a matching weak point was previously `补齐理解`, `待巩固`, `已掌握`, or the new evidence looks like recurrence.\n\nDo not read `knowledge-points/*.md` during ordinary grading unless creating or updating a reusable explanation card. Do not read unrelated GitHub setup, Pages publishing, sync, or automation references during ordinary grading.\n\n## Recorder Payload\n\nCreate a compact `diagnosis-update.json`. For full-paper input, provide `items` for **every visible question** using the schema in `photo-intake.md`; correct items are required positive evidence. The recorder derives the mistake subset and counts. The fields below remain supported for legacy wrong-question-only input, which cannot describe complete paper coverage.\n\nRequired top-level keys:\n\n- `date`, `source`, `source_type`, `grade`, `semester`, `total_items`, `correct_items`, `overall`.\n\nCommon optional top-level keys:\n\n- `source_slug`, `semester_range`, `term_phase`, `scope`, `mistake_book`, `cause_summary`, `teaching_and_practice`, `next_steps`, `progress`, `weak_points`, `short_term_notes`, `long_term_notes`, `active_context_md`.\n\nRequired `mistakes[]` keys:\n\n- `item_no`, `question`, `student_answer`, `correct_answer`, `result`, `error_type`, `cause`, `confidence`, `remediation`.\n\nUseful `mistakes[]` optional keys:\n\n- `historical_status`, `relapse_judgment`, `evidence`, `weak_point_slug`, `weak_point_title`, `repractice_status`.\n\nProvide `weak_points[]` only when the selected mode is `full_archive` or the evidence should explicitly update a durable weak-point file. Ordinary light records should not create weak-point files merely because a wrong item has a cause.\n\nUse `active_context_md` as the complete replacement text for `memory/active-context.md` when the compact current context should change.\n\n## Validate And Record\n\nValidate first:\n\n```bash\npython3 {baseDir}/scripts/validate_diagnosis_payload.py \\\n  --workspace . \\\n  --mode auto \\\n  --input diagnosis-update.json\n```\n\nRecord after validation:\n\n```bash\npython3 {baseDir}/scripts/record_grading_diagnosis.py \\\n  --workspace . \\\n  --mode auto \\\n  --input diagnosis-update.json\n```\n\nThe recorder validates internally, so the separate validator is optional. Use `--mode auto` normally; it reports the selected mode and reasons. Explicit `--mode full_archive` remains available. Recording the identical payload again returns the original result without appending duplicate evidence. `--dry-run` performs no writes, including logs.\n\nBoth scripts append `.zhizhi-math-coach/run-log.jsonl`.\n\n## Sync\n\nIf automatic Git sync is enabled after local files are written:\n\n```bash\npython3 {baseDir}/scripts/sync_learning_repo.py \\\n  --workspace . \\\n  --mode after-task \\\n  --task-kind grading \\\n  --message \"Update learning data\"\n```\n\nWhen `.zhizhi-math-coach/config.json` has `git_sync.defer_push_after_grading: true`, grading sync commits locally and skips push. A later explicit sync, review, worksheet, or publish task can push.\n\nFile v0.3.1:references/geometry-generation.md\n\n# Geometry Generation\n\n## Purpose\n\nGenerate geometry practice that is reproducible, printable, and checkable.\n\nThese are optional internal tools, not the required public workflow. Default paper design follows `worksheet-generation.md`; parents receive the paper preview and print file without choosing a drawing technology. Use these helpers when repeatability is useful.\n\n## Supported V1 Pattern\n\nUse `geometry_problem` items with:\n\n```json\n{\n  \"type\": \"geometry_problem\",\n  \"prompt\": \"求下面长方形的周长。\",\n  \"geometry_spec\": {\n    \"type\": \"rectangle\",\n    \"width_label\": \"8 cm\",\n    \"height_label\": \"5 cm\"\n  },\n  \"answer_prompt\": \"周长是\",\n  \"answer_suffix\": \"cm\",\n  \"answer_detail\": \"`(8 + 5) × 2 = 26`，周长是 26 cm。\"\n}\n```\n\nThe renderer also supports `polygon`, `shape_collection`, `clock`, `number_line` and `grid`. Diagrams are bounded and validated before rendering.\n\n## Automatic Visual Variants\n\n```bash\npython3 {baseDir}/scripts/generate_visual_practice.py \\\n  --kind mixed --count 4 --seed 12 \\\n  --output worksheets/visual-practice/worksheet-spec.json\npython3 {baseDir}/scripts/generate_worksheet.py worksheets/visual-practice/worksheet-spec.json\n```\n\nSupported template kinds: `shape_collection` (count shapes), `clock` (whole/half hours), `number_line` (missing values up to 20), `grid` (count shaded cells), and `mixed`. Change `--seed` for reproducible variants. `--kind auto --workspace .` selects a supported visual knowledge point from the saved assessment, prioritizing weak/uncertain topics.\n\nStable IDs used for automatic topic selection:\n\n| Knowledge-point ID | Template |\n| --- | --- |\n| `geometry.shape-recognition` | shape_collection |\n| `time.clock-reading` | clock |\n| `number.number-line` | number_line |\n| `geometry.grid-counting` | grid |\n\nGenerated items use `review_status: template_verified`: the validator recalculates the expected prompt and answer from the geometry and rejects mismatches. This status does not mean a human reviewed the question. Edited/custom prompts should use the normal model/human review workflow. Clock hour hands include minute-dependent movement; hidden number-line values and digital clock answers do not appear in SVG accessibility text.\n\n## Diagram Data\n\n- `shape_collection`: `shapes` contains `kind` (`circle`, `triangle`, `square`, `rectangle`), `x`, `y`, `width`, `height`. Coordinates use the specified canvas; circle/square dimensions must match.\n- `clock`: `hour` 0–23 and `minute` 0–59; use a canvas at least 180×180. The drawing represents a 12-hour dial, not an AM/PM indicator.\n- `number_line`: integer `start`, `end`, positive `step`, and `hidden_values`; at most 20 intervals.\n- `grid`: `rows`, `cols` up to 12 and unique zero-based `[row, col]` `shaded_cells`.\n- `polygon`: three or more `[x, y]` `points` inside the canvas. The model must check side relationships and avoid unintended self-intersections; coordinate validation alone does not prove the mathematical diagram is correct.\n\nFor photo-derived variants, identify the tested concept and spatial relations before changing the diagram. A photo can contain overlapping shapes, folding, solids or perspective not covered by these templates. Preserve its original and diagram description; do not replace it with an unrelated easy template or claim exact reconstruction. Use custom structured geometry plus explicit review where feasible.\n\n## Quality Rules\n\n- Labels must be readable after printing.\n- Diagrams must not reveal answers that should be solved.\n- The child-facing worksheet must not contain `answer_detail`.\n- The answer key must include the formula and intermediate values.\n- If a diagram is ambiguous or cannot be rendered deterministically, mark it `human_review_needed`.\n\n## Future Geometry Extensions\n\n- angles;\n- measuring lines;\n- composite area and perimeter;\n- grid-based shapes;\n- symmetry and folding;\n- unit conversion around area and perimeter.\n\nFile v0.3.1:references/github-pages-publishing.md\n\n# GitHub Pages Publishing\n\n## Purpose\n\nUse GitHub Pages for child-facing worksheet HTML/PDF when the parent accepts public worksheet links. PDF delivery stays first: generate or send `worksheet.pdf` before waiting for Pages when the channel supports file replies.\n\nDo not publish answers, diagnosis records, long-term memory, weak-point history, student photos, school papers, or textbook files.\n\n## Default Flow\n\nAfter generating a worksheet PDF/HTML in a Pages-enabled public personal repository, publish and wait when a public link is needed or when `.zhizhi-math-coach/config.json` has `pages.auto_publish_worksheets: true`:\n\n```bash\npython3 {baseDir}/scripts/publish_and_wait_pages.py \\\n  worksheets/YYYY-MM-DD-topic \\\n  --workspace <personal-learning-workspace> \\\n  --base-url https://<github-user>.github.io/<repo>\n```\n\nThe script:\n\n1. Copies public-safe worksheet HTML and `worksheet.pdf` into `site/` when the PDF exists.\n2. Rebuilds `site/index.html` from all worksheets.\n3. Pulls the remote branch with `git pull --rebase --autostash` before committing, unless `--no-pull` is passed.\n4. Stages only public-safe publishing files: `site/`, `.github/workflows/pages.yml` when present, and `worksheets/*/publish.json`.\n5. Commits and pushes to the configured branch.\n6. If push is rejected because the remote changed, pulls with rebase and retries once.\n7. Waits for the GitHub Actions Pages workflow for that commit.\n8. Checks the Pages index and worksheet URLs before reporting `pages-ready`.\n\nUse local-only publishing when GitHub sync is unavailable or the parent asks only for files:\n\n```bash\npython3 {baseDir}/scripts/publish_html_site.py \\\n  worksheets/YYYY-MM-DD-topic \\\n  --workspace <personal-learning-workspace> \\\n  --base-url https://<github-user>.github.io/<repo>\n```\n\nThe publisher writes:\n\n- `site/index.html`: public worksheet list.\n- `site/worksheets/<slug>/index.html`: child-facing worksheet page.\n- `site/worksheets/<slug>/worksheet.pdf`: child-facing worksheet PDF when generated.\n- `site/.nojekyll`: disables Jekyll processing.\n- `worksheets/YYYY-MM-DD-topic/publish.json`: publication manifest.\n\nThe index is rebuilt from all public-safe worksheet HTML files under `worksheets/`, even when publishing a single worksheet path. It sorts worksheets by date descending and shows date, practice status, title, file links, topic, grade, item count, and completion summary. Practice status is inferred from `worksheets/status.md` when available; otherwise a generated worksheet is shown as `未练习`.\n\nThis only produces local `site/` files. A public URL requires the personal learning repository to be pushed to GitHub and GitHub Pages to be configured for that repository.\n\n## Public Repository Mode\n\nIf the parent chooses to make the personal learning repository public to avoid paid private Pages:\n\n- Clarify that the whole public repository is viewable, not only the Pages site. Public Pages makes `site/` easy to open, but GitHub users can also browse tracked files outside `site/`.\n- Use this mode only when the parent accepts public visibility of committed files, or when the repository commits only public-safe files.\n- Do not add collaborators unless they should be able to push.\n- For `main`, public GitHub repositories are read-only to non-collaborators by default. Recommend branch protection/rulesets to block force pushes and branch deletion. Do not enable a rule that requires pull requests or blocks direct pushes if OpenClaw is expected to push `site/` and workflow updates directly.\n\nRecommended GitHub Pages setting:\n\n1. Repository Settings -> Pages.\n2. Build and deployment -> Source: `GitHub Actions`.\n3. If not present, create `.github/workflows/pages.yml` with the bundled setup script:\n\n```bash\npython3 {baseDir}/scripts/setup_github_pages_workflow.py \\\n  --workspace <personal-learning-workspace>\n```\n\nIf GitHub sync is already authorized through the Deploy key, OpenClaw may commit and push this workflow after the parent asks it to set up Pages:\n\n```bash\ngit add .github/workflows/pages.yml site\ngit commit -m \"Configure GitHub Pages publishing\"\ngit push\n```\n\nThe push triggers the GitHub Actions Pages deployment. Return the expected URL `https://<github-user>.github.io/<repo>/` and tell the parent that the first deployment may take a short time.\n\nIn normal worksheet generation, first return or send the generated `worksheet.pdf` when available. If Pages mode is already configured in `.zhizhi-math-coach/config.json`, run `publish_and_wait_pages.py` after `generate_worksheet.py` without asking again when `pages.auto_publish_worksheets` is true. Otherwise run it only when a public link is wanted. Return:\n\n- the public index URL;\n- the newly generated worksheet URL;\n- local paths for `worksheet.pdf`, `worksheet.html`, and `answer-key.md`.\n\nIf deployment fails or times out, do not hide the local result. Return local paths, pushed commit if known, and the Actions run URL or next setup step.\n\nRecommended ruleset for direct OpenClaw publishing:\n\n- Ruleset name: `main protect`.\n- Enforcement status: `Active`.\n- Bypass list:\n  - `Deploy keys`: `Always allow`.\n  - `Repository admin`: `Always allow`.\n- Target branches: `main`, or `Default` if the default branch is `main`.\n- Enabled rules:\n  - `Restrict updates`.\n  - `Restrict deletions`.\n  - `Block force pushes`.\n- Disabled rules:\n  - `Require a pull request before merging`.\n  - `Require status checks to pass`.\n  - `Require signed commits`.\n  - `Require deployments to succeed`.\n\nThis keeps the repository public-readable while allowing only the deploy key and repository admin to update `main`. It also avoids turning every OpenClaw update into a manual PR/merge flow.\n\n## Public Content Rule\n\nAllowed in `site/`:\n\n- child-facing worksheet HTML;\n- child-facing worksheet PDF;\n- worksheet title, date, topic, and strategy;\n- generated SVG diagrams and blank answer spaces.\n\nForbidden in `site/`:\n\n- `answer-key.md`;\n- answers or `answer_detail`;\n- `records/`, `mistakes/`, `memory/`, `weak-points/`, `knowledge-points/`, `curriculum/`;\n- completed worksheet photos, school papers, textbook PDFs, scans, or OCR output.\n\n## OpenClaw Output Rule\n\nWhen Pages is configured, return the PDF file/path first, then the Pages URL when deployment is ready. Use the Pages URL in Feishu notifications when available, and send the PDF file when the channel supports file messages. Keep answer keys and diagnosis links outside published `site/` output.\n\nIf the parent asks OpenClaw to sync, push, publish to GitHub, or send a public link, or if workspace config enables automatic publishing, read `github-sync-authorization.md` first. Do not assume GitHub CLI, GitHub token environment variables, or saved credentials are available. Use the Git preflight before newly enabling sync; after config is enabled, the sync/publish scripts should pull, commit, and push automatically. If authorization is missing, keep the local `site/` output, generate or suggest a repository Deploy key, send the public key and GitHub Settings -> Deploy keys guidance through Lark/Feishu when available, and return the local `site/` paths.\n\nFile v0.3.1:references/github-sync-authorization.md\n\n# GitHub Sync Authorization\n\n## Purpose\n\nOpenClaw may run on a machine that has no GitHub CLI, no SSH key, and no saved Git credentials. Do not assume GitHub sync is available.\n\nThe learning workflow must work in two layers:\n\n1. Always generate local learning files first.\n2. Sync to GitHub only after the parent asks for sync/publish, or after `.zhizhi-math-coach/config.json` records that automatic sync/Pages publishing is enabled and the current machine passes Git authorization checks.\n\nThe machine-readable config is the durable memory for this setup. README text and prior chat history are not enough for OpenClaw to know that a personal repository is already configured.\n\n## What Is Required\n\nGitHub sync requires standard `git` access from the OpenClaw machine:\n\n- `git` installed;\n- the personal learning workspace is a Git repository;\n- `origin` points to the target GitHub repository;\n- current machine has push authorization through a repository-scoped SSH deploy key, another SSH key, or an HTTPS token.\n\nGitHub CLI `gh` is optional. Do not require it.\n\nClawHub login is not GitHub repository authorization. Model provider login is not GitHub repository authorization.\n\n## Recommended Authorization: Repository Deploy Key\n\nPrefer a GitHub repository Deploy key for OpenClaw-hosted machines. Many OpenClaw providers do not expose a safe place for user-managed GitHub token environment variables, while SSH deploy keys only require the public key to be added in the target repository settings.\n\nRules:\n\n- Generate one key per personal learning repository.\n- Keep the private key on the OpenClaw machine only.\n- Send only the `.pub` public key to the parent.\n- The parent adds the public key to the target repository: GitHub repository -> Settings -> Deploy keys -> Add deploy key.\n- The parent must enable `Allow write access` if OpenClaw should push commits.\n- Use Deploy keys only for the personal learning repository, not for the reusable skill source repository.\n- GitHub reference: https://docs.github.com/developers/overview/managing-deploy-keys/\n\nOpenClaw setup command:\n\n```bash\npython3 {baseDir}/scripts/prepare_github_deploy_key.py \\\n  --workspace <personal-learning-workspace> \\\n  --configure-remote\n```\n\nIf `origin` is not configured yet, pass the target repository explicitly:\n\n```bash\npython3 {baseDir}/scripts/prepare_github_deploy_key.py \\\n  --workspace <personal-learning-workspace> \\\n  --github-owner <user> \\\n  --repo <repo> \\\n  --configure-remote\n```\n\nAfter the command prints `public-key-start` and `public-key-end`, send only that public key block to the parent. If a Lark/Feishu channel is available, send a message like:\n\n```text\n请把下面这个 OpenClaw 公钥加入 GitHub 仓库：\n\n仓库：<user>/<repo>\n位置：Settings -> Deploy keys -> Add deploy key\nTitle：OpenClaw zhizhi-math-coach <repo>\nKey：<public-key>\n权限：勾选 Allow write access\n\n添加后回复“已添加”，我会再次检查并继续发布。\n```\n\nIf no Lark/Feishu channel is available, return the same guidance in the OpenClaw reply. Never send the private key.\n\nAfter the parent confirms the key has been added, run:\n\n```bash\npython3 {baseDir}/scripts/check_git_sync.py \\\n  --workspace <personal-learning-workspace> \\\n  --check-push \\\n  --write-config \\\n  --auto-sync \\\n  --sync-full-learning-data \\\n  --public-repository-accepted\n```\n\nIf the preflight succeeds, this writes `.zhizhi-math-coach/config.json` so future OpenClaw runs can automatically pull, commit, and push the configured learning-data scope.\n\n## Advanced Setup And Publish-Time Guidance\n\nDo not check or prompt for GitHub sync during ordinary grading or PDF worksheet generation unless `.zhizhi-math-coach/config.json` already enables automatic sync or Pages publishing. Default unconfigured use is local learning files plus direct `worksheet.pdf` delivery.\n\nExplicit trigger phrases:\n\n- `进阶：配置 GitHub 云同步`\n- `进阶：开启 GitHub Pages 在线访问`\n- `生成 GitHub Deploy key`\n- `配置云端备份`\n- `返回 SSH 公钥`\n- `配置公开链接`\n\nWhen triggered, return the SSH public key and this public guide URL:\n\n```text\nhttps://github.com/linzi007/zhizhi-math-coach-openclaw/blob/main/docs/github-advanced-setup.zh-CN.md\n```\n\nWhen the parent asks for cloud sync, public links, Pages, push, commit, or automatic online publishing, check whether GitHub sync appears ready. If the workspace is missing `.git`, `origin`, or push authorization, include a short guidance note without blocking grading or worksheet generation:\n\n- local learning files will still be generated;\n- PDF delivery does not require GitHub;\n- cloud backup and public links require GitHub sync and, for Pages, repository Pages setup;\n- OpenClaw can generate a repository-specific SSH public key;\n- the parent should add it to GitHub Deploy keys with write access.\n\nWhen the parent later asks to publish a worksheet, send a public link, sync, push, or commit, or when the workspace config already enables automatic publishing:\n\n1. Generate the worksheet and local `site/` output first.\n2. Run the Git preflight.\n3. If preflight fails, run or suggest `prepare_github_deploy_key.py`, send the public key and Deploy key steps through Lark/Feishu when available, and return the local file paths.\n4. After the parent adds the key, rerun preflight and then push.\n\nDo not treat missing GitHub authorization as worksheet-generation failure.\n\n## Alternative Authorization: Existing SSH\n\nUse SSH when possible because it does not require storing a token in commands.\n\nParent setup checklist:\n\n```bash\ngit --version\nssh -T git@github.com\ngit remote -v\ngit remote set-url origin git@github.com:<user>/<repo>.git\ngit push --dry-run origin HEAD\n```\n\nIf `ssh -T git@github.com` fails, the parent must add an SSH public key to GitHub on that machine/account.\n\n## Last Resort: HTTPS Token\n\nUse HTTPS tokens only when deploy keys or SSH are not available. The parent should create a fine-grained GitHub personal access token (PAT) scoped to the personal learning repository only.\n\nRecommended token settings:\n\n- Create path: GitHub web -> profile photo -> Settings -> Developer settings -> Personal access tokens -> Fine-grained tokens -> Generate new token.\n- Token type: fine-grained personal access token.\n- Resource owner: the GitHub user or organization that owns the personal learning repository.\n- Repository access: `Only select repositories`, then select only the personal learning repository, such as `zhizhi-math-learning-data`.\n- Expiration: choose a finite expiry, for example 30 to 90 days, unless the parent has a managed secret-rotation process.\n- Repository permissions for normal sync: `Contents: Read and write`.\n- Repository permissions for optional workflow file setup: add `Workflows: Read and write` only if OpenClaw or local git will commit files under `.github/workflows/`.\n- Repository permissions for GitHub Pages API management: add `Pages: Read and write` only if an automation will enable or update Pages through the GitHub API. This is not needed when the parent enables Pages in the GitHub web UI, and not needed for ordinary `git push` of `site/`.\n\nDo not grant broad access such as `All repositories` or classic `repo` scope unless fine-grained tokens cannot satisfy the user's GitHub account or organization policy.\n\nDo not ask the parent to paste tokens into chat. Do not write tokens into repository files.\n\nAcceptable storage options depend on the machine:\n\n- Git Credential Manager;\n- OS keychain/credential helper;\n- environment secret outside the repository;\n- platform-managed secret store.\n\nParent setup checklist for HTTPS:\n\n```bash\ngit --version\ngit remote -v\ngit remote set-url origin https://github.com/<user>/<repo>.git\ngit push --dry-run origin HEAD\n```\n\nWhen Git prompts for credentials, enter the GitHub username and use the PAT as the password. Never place the PAT in the remote URL, worksheet files, README files, prompts, or chat messages.\n\n## Preflight\n\nBefore any automatic commit/push, run:\n\n```bash\npython3 {baseDir}/scripts/check_git_sync.py --workspace <personal-learning-workspace> --check-push\n```\n\nIf the check fails, do not treat worksheet generation as failed. Return:\n\n- local generated file paths;\n- missing authorization item;\n- exact command the parent can run to fix it;\n- a note that sync can be retried later.\n\n## Configured Automatic Sync Policy\n\nDo not run `git add`, `git commit`, or `git push` for ordinary grading or local-only generation unless the parent says \"同步\", \"发布\", \"push\", \"提交到 GitHub\", \"发链接\", or equivalent, or `.zhizhi-math-coach/config.json` enables automatic Git sync or automatic Pages publishing.\n\nBefore reading long-term records in a configured workspace:\n\n```bash\npython3 {baseDir}/scripts/sync_learning_repo.py \\\n  --workspace <personal-learning-workspace> \\\n  --mode before-task\n```\n\nAfter local files are changed in a configured workspace:\n\n```bash\npython3 {baseDir}/scripts/sync_learning_repo.py \\\n  --workspace <personal-learning-workspace> \\\n  --mode after-task \\\n  --message \"Update learning data\"\n```\n\nIf sync is requested:\n\n1. Generate or update local files.\n2. If a child-facing link is requested or Pages auto-publishing is enabled, run `publish_html_site.py` or `publish_and_wait_pages.py`.\n3. Run the Git preflight.\n4. If preflight passes, commit and push the requested scope.\n5. If preflight fails, return local paths and setup guidance.\n\nFor public repositories, warn before committing `memory/`, `records/`, `mistakes/`, `weak-points/`, answer keys, uploads, or student identifiers.\n\nFor private repositories, full learning-state sync is acceptable after the parent asks for sync.\n\n## GitHub Pages Note\n\nGitHub Pages availability for private repositories depends on the user's GitHub plan. If Pages is not available or not authorized, keep local HTML output and Git sync separate: the worksheet still exists locally even if no public URL can be produced.\n\nFile v0.3.1:references/grading-diagnosis-rubric.md\n\n# Grading And Diagnosis Rubric\n\n## Accepted Inputs\n\nAccept any of these:\n\n- Full completed worksheet or photo.\n- Teacher-graded paper.\n- Parent-copied wrong questions.\n- Direct text: `题目 / 孩子答案 / 正确答案` or `题目 / 孩子答案`.\n\nIf the correct answer is missing, solve the problem and mark it as inferred. If handwriting or photo evidence is unclear, mark the item `需确认`.\n\n## Item Diagnosis Fields\n\nFor each wrong or uncertain item, record:\n\n| Field | Meaning |\n| --- | --- |\n| `学期` | Semester bucket for review, such as 一年级下学期 |\n| `学期时间段` | Date range used for that semester |\n| `错题类型` | The task layer that failed |\n| `可能原因` | Why the mistake likely happened |\n| `历史状态` | Prior status for the same weak point, if known |\n| `复发判断` | Relapse, transfer failure, forgetting, or one-off slip |\n| `证据` | Written work or parent observation supporting the diagnosis |\n| `置信度` | `高` / `中` / `低` |\n| `补救动作` | Explanation or practice targeting the cause |\n\n## Error Type Labels\n\nUse concise labels. Multiple labels are allowed; put the primary label first.\n\n- `阅读理解`: missed keywords, ignored conditions, confused wording, skipped units.\n- `题型判断`: chose the wrong structure or formula.\n- `概念理解`: does not understand the underlying meaning.\n- `计算技能`: arithmetic error, counting error, borrowing/carrying error.\n- `步骤遗漏`: missed conversion, comparison, intermediate quantity, or final step.\n- `审题习惯`: copied numbers wrong, answered the wrong question, forgot unit.\n- `表达书写`: answer sentence, unit, equation, or explanation incomplete.\n- `粗心偶发`: evidence points to one isolated slip.\n- `问法未识别`: solved a related quantity but not the final question.\n- `条件误用`: used irrelevant information or ignored required information.\n- `干扰条件干扰`: extra information pulled the child away from the model.\n- `中间量缺失`: skipped the intermediate value needed for the final answer.\n- `两步逻辑漏步`: wrote only one equation when two or more were needed.\n- `式子对但计算错`: model was right, arithmetic caused the wrong answer.\n\n## Likely Causes\n\nPrefer causes that change the next practice plan:\n\n- `关键词不敏感`\n- `算式模型不稳`\n- `逆向位置转换不稳`\n- `进退位过程不熟`\n- `数位意识不稳`\n- `口算事实不熟`\n- `检查习惯不足`\n- `题目文字负担过高`\n- `条件取舍不稳`\n- `中间量意识不稳`\n- `问法回看不足`\n\n## Confidence Rules\n\n- `高`: written work directly shows the cause, or the same pattern repeats.\n- `中`: final answer strongly suggests the cause, but work is incomplete.\n- `低`: only the final answer is known, or multiple causes are plausible.\n\nFor low confidence, generate 1 to 2 verification questions before changing a major weak-point status.\n\n## Correction Output\n\nFor each high-priority cause:\n\n1. Give a short parent-facing explanation.\n2. Show the correct solving path.\n3. Explain how to check the answer.\n4. Provide 3 to 6 validation questions.\n5. State what result means weak / consolidating / mastered.\n\nGroup repeated errors by cause and teach the cause once.\n\n## Word Problem Layers\n\nFor word-problem mistakes, separate these layers before assigning practice:\n\n1. `读题`: Did the student identify the final question and keywords?\n2. `条件`: Did the student use required conditions and ignore distractors?\n3. `建模`: Did the student choose the right operation or relation?\n4. `步骤`: Did the student compute intermediate quantities first?\n5. `计算`: Were facts, carrying, or borrowing correct?\n6. `答句/检查`: Does the final sentence match the question and unit?\n\nFile v0.3.1:references/knowledge-point-explanations.md\n\n# Knowledge Point Explanations\n\n## Purpose\n\nCreate reusable knowledge-point cards that help a parent explain, a student reread, and the coach decide whether the knowledge is actually mastered.\n\n## Card Location\n\nStore reusable cards in:\n\n```text\nknowledge-points/<topic-slug>.md\n```\n\n## Required Sections\n\nEach card should include:\n\n- Applicable grade and textbook scope.\n- Core concept in parent-facing language.\n- Parent explanation script.\n- Student short version.\n- Doing tips.\n- Common errors and why they happen.\n- Quick verification questions.\n- Mastery evidence.\n\n## Mastery Evidence\n\nUse evidence layers instead of correctness alone:\n\n1. The child can explain the rule in plain language.\n2. The child can solve same-structure items.\n3. The child can solve variants with changed wording, scenario, or condition order.\n4. The child can still solve after spaced review.\n\n## Output Style\n\n- Parent version: concrete, short, and directly usable while explaining.\n- Student version: shorter, no diagnosis jargon.\n- Avoid large copied textbook passages.\n- Link explanation to the observed cause, not just the topic name.\n\n## After Explanation\n\nGenerate a `post_explanation_check` set of 3 to 6 items. Use it to decide whether the issue is still weak, consolidating, or ready for spaced review.\n\nFile v0.3.1:references/openclaw-quickstart.md\n\n# OpenClaw Quickstart\n\n## Purpose\n\nUse this reference when onboarding a parent or when the first reply in a personal learning workspace needs setup guidance.\n\nKeep the user-facing reply short. Prefer a checklist and the next command/action over long architecture explanations.\n\nReply in the user's language. Standalone worksheet requests can use `zhizhi-math-worksheet` without initializing a learning archive. The initializer below is a Chinese-school profile with Chinese labels and regional defaults; adapt profiles/calendars for other systems instead of running it unchanged. Language alone does not identify the school system.\n\n## First-Use Checklist\n\n1. Confirm the current workspace is the personal learning repository, not `zhizhi-math-coach-openclaw`.\n2. Check `.zhizhi-math-coach/config.json` when present. It is the durable record for whether Git sync and Pages auto-publishing are already enabled.\n3. If the learning files are missing, initialize:\n\n```bash\npython3 {baseDir}/scripts/init_learning_workspace.py \\\n  --workspace . \\\n  --student-name <nickname> \\\n  --school-entry-year <YYYY> \\\n  --grade <一年级> \\\n  --semester <上学期|下学期> \\\n  --textbook-edition <人教版> \\\n  --textbook-volume <一年级下册>\n```\n\n4. For normal unconfigured use, no GitHub setup is required. Generate worksheets locally and return or send `worksheet.pdf`.\n\n## Advanced Cloud Sync And Pages\n\nUse this section only when the parent asks for cloud sync, GitHub backup, public links, Pages, push, or automatic online publishing.\n\nTrigger phrases:\n\n- `Set up GitHub backup`\n- `Publish public worksheet links`\n- `Create a GitHub deploy key`\n- `进阶：配置 GitHub 云同步`\n- `进阶：开启 GitHub Pages 在线访问`\n- `生成 GitHub Deploy key`\n- `配置云端备份`\n- `返回 SSH 公钥`\n- `配置公开链接`\n\nFor Chinese users, this public guide is available; for English users, explain the steps below in English and use the installed `references/github-sync-authorization.md` rather than requiring them to read a Chinese-only guide:\n\n```text\nhttps://github.com/linzi007/zhizhi-math-coach-openclaw/blob/main/docs/github-advanced-setup.zh-CN.md\n```\n\nThe reply should include:\n\n- SSH public key copied only from `public-key-start` to `public-key-end`;\n- GitHub path: `Settings -> Deploy keys -> Add deploy key`;\n- instruction to enable `Allow write access`;\n- next step: parent replies `已添加`, then run `check_git_sync.py --workspace . --check-push --write-config --auto-sync --sync-full-learning-data --public-repository-accepted`.\n\nIf GitHub owner/repo is missing and cannot be inferred from `origin`, ask:\n\n```text\nWhat are your GitHub username and personal learning repository name, for example your-name / math-learning-data?\n```\n\n1. Check GitHub sync only if the parent wants sync, public links, automatic Pages publishing, or `.zhizhi-math-coach/config.json` already enables it:\n\n```bash\npython3 {baseDir}/scripts/check_git_sync.py \\\n  --workspace . \\\n  --check-push \\\n  --write-config \\\n  --auto-sync \\\n  --sync-full-learning-data \\\n  --public-repository-accepted\n```\n\n2. If sync is not ready, generate a repository deploy key and send only the public key:\n\n```bash\npython3 {baseDir}/scripts/prepare_github_deploy_key.py \\\n  --workspace . \\\n  --github-owner <user> \\\n  --repo <repo> \\\n  --configure-remote\n```\n\n3. If public Pages is desired, confirm GitHub Settings -> Pages -> Source is `GitHub Actions`, then ensure the workflow exists:\n\n```bash\npython3 {baseDir}/scripts/setup_github_pages_workflow.py \\\n  --workspace . \\\n  --public-repository-accepted\n```\n\nIf a workspace is already configured and the task changes learning files, run:\n\n```bash\npython3 {baseDir}/scripts/sync_learning_repo.py --workspace . --mode before-task\npython3 {baseDir}/scripts/sync_learning_repo.py --workspace . --mode after-task --message \"Update learning data\"\n```\n\n## Quick Prompt Reference\n\nUse these prompt shapes in examples and replies:\n\n- `$zhizhi-math-coach 批改这张练习卷，记录薄弱项。`\n- `$zhizhi-math-coach 根据最近错题生成变式练习。`\n- `$zhizhi-math-coach 针对退位减法薄弱项出专项练习。`\n- `$zhizhi-math-coach 生成期末错因复习卷，并发布学生版链接。`\n- `$zhizhi-math-coach 开启定时任务，每天提醒到期复习和待批改练习。`\n\n## Scheduled Reminders\n\nUse this only after the parent asks for scheduled reminders or `.zhizhi-math-coach/config.json` already has `automation.enabled` and `automation.auto_register_when_supported` true.\n\n```bash\npython3 {baseDir}/scripts/setup_scheduled_tasks.py \\\n  --workspace . \\\n  --enable-config \\\n  --auto-register \\\n  --timezone Asia/Shanghai\n```\n\nUse the parent's local IANA timezone for `--timezone`. If `openclaw` is not installed in the current environment, the script prints the `openclaw cron add` commands to run in an OpenClaw Gateway environment. Scheduled reminders should not write records or generate worksheets unless the parent explicitly enables those config flags.\n\n## Publish-Ready Checklist\n\nThis is an advanced online-access checklist. It is not needed when the worksheet is delivered as a PDF file.\n\nAutomatic Pages publishing is allowed when all are true:\n\n- `.zhizhi-math-coach/config.json` exists with `pages.enabled` and `pages.auto_publish_worksheets` true.\n- `.github/workflows/pages.yml` exists.\n- The GitHub repository Pages source is `GitHub Actions`.\n- The repository deploy key has write access.\n- `check_git_sync.py --check-push` succeeds.\n- The parent accepts public visibility of committed files in a public repository.\n\nWhen ready, generate the worksheet PDF first, then publish and wait only if a public link is needed:\n\n```bash\npython3 {baseDir}/scripts/publish_and_wait_pages.py \\\n  worksheets/YYYY-MM-DD-topic \\\n  --workspace . \\\n  --base-url https://<github-user>.github.io/<repo>\n```\n\nReply with:\n\n- Local or sent `worksheet.pdf`.\n- Pages index URL.\n- Newly generated worksheet URL.\n- Local `worksheet.html` and `answer-key.md` paths.\n- Any caveat if Actions failed or timed out.\n\n## Public Repository Ruleset\n\nRecommended ruleset for direct OpenClaw publishing:\n\n- Name: `main protect`.\n- Status: `Active`.\n- Bypass:\n  - `Deploy keys`: `Always allow`.\n  - `Repository admin`: `Always allow`.\n- Target: `main`, or `Default` if default branch is `main`.\n- Enable: `Restrict updates`, `Restrict deletions`, `Block force pushes`.\n- Do not enable: required PRs, status checks, signed commits, or deployment gates.\n\nThis lets OpenClaw push through the deploy key while public viewers cannot edit `main`.\n\nArchive v0.3.0: 51 files, 134680 bytes\n\nFiles: agents/openai.yaml (311b), assets/worksheet/a4-print.css (1150b), assets/worksheet/a4-single.html (3938b), assets/worksheet/question-types.json (3785b), references/automation-openclaw.md (3642b), references/complex-problem-generation.md (1292b), references/curriculum-alignment.md (1919b), references/daily-grading-workflow.md (6757b), references/geometry-generation.md (3932b), references/github-pages-publishing.md (7122b), references/github-sync-authorization.md (9952b), references/grading-diagnosis-rubric.md (3754b), references/knowledge-point-explanations.md (1296b), references/openclaw-quickstart.md (6573b), references/photo-intake.md (9312b), references/progress-tracking.md (2713b), references/relapse-handling.md (1821b), references/school-calendar.md (1873b), references/student-profile-template.md (1483b), references/word-problem-variant-design.md (2754b), references/worksheet-generation.md (11074b), references/worksheet-standards.md (3766b), references/worksheet-strategies.md (2197b), scripts/build_grading_context.py (9952b), scripts/check_git_sync.py (6069b), scripts/configure_learning_workspace.py (6573b), scripts/generate_visual_practice.py (5949b), scripts/generate_worksheet.py (20020b), scripts/geometry_primitives.py (8424b), scripts/git_scope.py (1844b), scripts/grading_followup.py (5541b), scripts/init_learning_workspace.py (17810b), scripts/knowledge_assessment.py (5446b), scripts/learning_workspace_config.py (6985b), scripts/model_worksheet.py (6308b), scripts/photo_jobs.py (7373b), scripts/prepare_github_deploy_key.py (7683b), scripts/publish_and_wait_pages.py (11823b), scripts/publish_html_site.py (17393b), scripts/record_grading_diagnosis.py (27627b), scripts/run_log.py (949b), scripts/setup_github_pages_workflow.py (3736b), scripts/setup_scheduled_tasks.py (10843b), scripts/sync_learning_repo.py (8544b), scripts/validate_diagnosis_payload.py (10858b), scripts/validate_worksheet_spec.py (4789b), scripts/worksheet_preview.py (1726b), scripts/workspace_transaction.py (3036b), skill-card.md (2344b), SKILL.md (35877b), _meta.json (136b)\n\nFile v0.3.0:SKILL.md\n\n---\nname: zhizhi-math-coach\ndescription: \"Primary-school math coaching: grade worksheet photos, document full papers, track evidence-based knowledge mastery, explain mistakes and plan follow-up practice. Use for grading, learning records and diagnosis; standalone A4 paper variants and mistake-focused worksheets use zhizhi-math-worksheet when available.\"\n---\n\n# Zhizhi Math Coach\n\n## Language And Regional Scope\n\nReply in the user's language unless they specify another. Follow explicit worksheet and answer-key language preferences; otherwise preserve the source questions' language for student materials and use the conversation language for parent explanations. Localize generated headings and directions, not just the questions. Do not produce bilingual pages unless requested.\n\nLanguage does not establish a country's grade levels, school dates, textbook, currency, units, or timezone. Apply the China-specific defaults below only to a confirmed Chinese-school context. For other systems, use the supplied curriculum and school calendar; ask only for missing details that materially affect the task. Never convert grade names across systems by guessing.\n\nThe bundled archive initializer, record summaries, and older fixed question templates still contain Chinese labels and China-specific defaults. They are not fully localized. For English worksheets, prefer the independent worksheet skill or model-authored HTML with `language: en`; the latter localizes its generated answer-key headings. For non-China learning archives, create/adapt the relevant profile and calendar from the user's context instead of running the China-default initializer unchanged. Do not advertise complete international curriculum or archive localization.\n\n## Skill Boundary\n\n`zhizhi-math-coach` owns grading, explanations, full-paper archives, knowledge assessment and configured background/sync work. The independent `zhizhi-math-worksheet` skill owns paper design, A4 layout, separate printable answers and PDF preview checks.\n\nFor a request that only asks for a paper, use the installed `zhizhi-math-worksheet` instructions when available, before the learning-record loop below. Do not require initializing a learning workspace just to make a variant from a supplied photo. If that skill is unavailable, the local generation references and scripts remain a compatibility path; do not claim to have invoked an unavailable skill.\n\nFor grading followed by practice, complete the requested diagnosis, select relevant questions, then pass a question list with complete stems, options and necessary diagram descriptions. Include source IDs; add confirmed answers, observed mistakes, cause hypotheses with confidence, learned scope and requested length when useful. Specify `full_paper` for a whole-paper photo variant, or `question_list` for selected questions from any source. Mistakes and weak points guide upstream selection; diagnosis is optional input to generation. The worksheet skill returns local artifacts and the private question/answer mapping; this coach handles any already-configured recording, sync or publication afterward. Generation alone is never mastery evidence.\n\n## Core Loop\n\nUse a local evidence loop for every task:\n\n1. Read `.zhizhi-math-coach/config.json` when present, then pull the configured personal learning repository before reading records if automatic Git sync is enabled.\n2. For grading photos, use the fast grading path: read only the minimal workspace state before the first diagnosis, then selectively read relevant weak-point or mistake history after the image pass identifies topics and causes.\n3. Resolve grade, term, textbook, and exam/break scope from the learner's configured school system and local rules; do not apply another region's calendar by default.\n4. Accept completed paper photos, teacher-marked work, generated worksheets, or direct questions. For photos, read `references/photo-intake.md`: preserve the originals, answer the immediate grading request, then complete the full-paper archive through the queued worker or current session. Do not retain only wrong questions.\n5. Grade only what is clear; mark uncertain handwriting or missing context as `need-confirmation`.\n6. Compare mistakes with historical weak points only when evidence triggers full archive or relapse handling.\n7. Explain the correction in parent-friendly language, and include a shorter student-facing version when useful.\n8. Generate short validation practice for the cause, not just the surface topic.\n9. Tag all visible questions with knowledge points and evidence confidence; use the recorder to document correct/incorrect/unanswered/uncertain items, update per-concept assessments, and produce dated follow-up suggestions. Update durable weak-point status only when evidence supports it.\n10. If automatic Git sync, Pages publishing, or scheduled reminders are enabled in `.zhizhi-math-coach/config.json`, sync/publish/register supported automation without asking again after local files are written.\n\n## Expected Workspace\n\nUse these paths in the user's personal learning project unless they provide different names. The project repository may be public or private; do not assume either.\n\n- `.zhizhi-math-coach/config.json`: machine-readable workspace role, Git sync, GitHub Pages publishing, and scheduled reminder settings. This file is the source of truth for whether the parent has already enabled automatic pull/commit/push, Pages publishing, and OpenClaw cron registration.\n- `memory/long-term.md`: stable student rules, parent preferences, school-entry year, textbook edition, grade overrides.\n- `memory/active-context.md`: compact current learning context for daily grading. Keep it small enough for every photo-grading task.\n- `memory/short-term.md`: current observations, active priorities, pending checks.\n- `memory/local-memory-rules.md`: read/write/promotion rules for memory.\n- `curriculum/profile.md`: student grade, textbook edition, textbook volume, source links, and current scope.\n- `curriculum/scope.md`: unit-to-knowledge-point map for the current textbook.\n- `curriculum/progress.md`: school progress, learned/not-yet-learned topics, and exam scope.\n- `curriculum/school-calendar.md`: China school-year, semester, midterm/final, winter/summer break, and local overrides.\n- `knowledge-points/<topic-slug>.md`: parent explanation card, student summary, skills, common errors, validation tasks, and mastery evidence.\n- `weak-points/<topic-slug>.md`: long-lived weak-point records.\n- `mistakes/index.md`: mistake-book schema, semester ranges, review rules.\n- `mistakes/school-mistakes.md`: school papers, weekly tests, official homework.\n- `mistakes/system-mistakes.md`: worksheets generated by this system.\n- `records/learning-progress.md`: dated progress dashboard.\n- `records/knowledge-mastery.md` and `records/knowledge-state.json`: conservative per-concept assessments with counts and evidence.\n- `records/next-practice.json`: dated follow-up suggestions consumed by the compact context.\n- `.zhizhi-math-coach/photo-jobs/`: durable photo jobs and worker status.\n- `uploads/photo-jobs/`: originals preserved before foreground grading.\n- `records/YYYY-MM-DD-<source>-diagnosis.md`: one diagnosis per paper/photo batch/wrong-question batch.\n- `worksheets/YYYY-MM-DD-<topic-slug>/worksheet-spec.json`: compact worksheet source.\n- `worksheets/YYYY-MM-DD-<topic-slug>/worksheet.html`: child-facing printable worksheet.\n- `worksheets/YYYY-MM-DD-<topic-slug>/worksheet.pdf`: child-facing printable PDF for direct file delivery.\n- `worksheets/YYYY-MM-DD-<topic-slug>/answer-key.md`: answers, grading, and next-step rules.\n\nFor a Chinese-school learning project that is not initialized yet, the bundled initializer can be run from the workspace root. Its defaults are regional; other school systems need an adapted profile and calendar as described above:\n\n```bash\npython3 {baseDir}/scripts/init_learning_workspace.py \\\n  --workspace . \\\n  --student-name <nickname> \\\n  --school-entry-year <YYYY> \\\n  --grade <一年级> \\\n  --semester <上学期|下学期> \\\n  --textbook-edition <人教版> \\\n  --textbook-volume <一年级下册>\n```\n\nThe initializer creates missing files only by default. Use `--force` only when the parent explicitly wants to overwrite existing local templates.\n\n## Recommended Model Capability\n\nPrefer a frontier multimodal reasoning model for this skill. The model should support:\n\n- image understanding for worksheet photos, handwritten answers, and teacher-marked papers;\n- long-context reading across local `memory/`, `weak-points/`, `records/`, `curriculum/`, and worksheet files;\n- reliable tool use and local file edits;\n- structured JSON/text output for worksheet specs, diagnosis records, and progress updates;\n- configurable reasoning effort.\n\nWhy this matters:\n\n- Photo grading is common: parents will upload exercise sheets, teacher corrections, or handwritten answers. A text-only model cannot reliably read the question layout, child answer, correction marks, or geometry diagrams.\n- Handwriting and low-quality images need uncertainty handling: the model must decide when to grade, when to mark `need-confirmation`, and when to ask for a clearer photo.\n- Long-term learning follow-up needs context: weak-point repair depends on comparing current mistakes with `memory/`, `records/`, `mistakes/`, and `weak-points/` history.\n- Worksheet generation needs structure: the skill writes compact `worksheet-spec.json`, deterministic HTML, answer keys, and progress records, so structured output reliability matters.\n- Hard math tasks need reasoning: geometry, multi-step word problems, exam review planning, and transfer-failure diagnosis require more than shallow pattern matching.\n\nRecommended settings:\n\n- Use the configured frontier multimodal reasoning model for daily work. GPT-6 Astra supports text/image inputs and text output; generating a raster image directly requires a separate image-generation capability. Do not silently change the configured model or assume an unavailable image tool.\n- Hard cases: use higher reasoning for multi-image grading, low-confidence handwriting, complex word problems, geometry, midterm/final review planning, or memory consolidation.\n- Fast/simple tasks: use lower reasoning for reminders, checklist updates, or formatting existing records.\n- Avoid small text-only models for grading photos, geometry diagrams, or updating long-term learning records.\n\nPerformance target:\n\n- For one clear worksheet photo or a small wrong-question batch, produce the parent-facing grading summary before deep history consolidation.\n- Keep the initial read set small. Delay weak-point relapse comparison, reusable explanation-card updates, and long-term memory promotion until after the image evidence is understood.\n- Prefer compact JSON plus bundled scripts over generating long ad hoc Python or shell write scripts.\n- Default daily grading is one-turn fast grading plus light recording. Do not ask the parent to say \"记录一下\" after an ordinary photo unless the workspace is missing or the evidence is too unclear to record.\n- If evidence triggers full archive, upgrade automatically and keep history reads selective. Otherwise write the light record and avoid deep consolidation.\n\n## Workspace Config And Automatic Sync\n\nAt the start of every meaningful task in a personal learning workspace:\n\n1. Read `.zhizhi-math-coach/config.json` if it exists.\n2. If `workspace_role` is `personal-learning-data` and `git_sync.enabled` plus `git_sync.auto_pull_before_task` are true, run:\n\n```bash\npython3 {baseDir}/scripts/sync_learning_repo.py \\\n  --workspace . \\\n  --mode before-task\n```\n\n3. Then read only the task-specific local files. Do not recursively read whole `memory/`, `records/`, `mistakes/`, `weak-points/`, or `worksheets/` directories. Use the fast grading path for photos and use filename/topic searches before opening history files.\n\nIf `automation.enabled` and `automation.auto_register_when_supported` are true, and no scheduled jobs are recorded yet, run:\n\n```bash\npython3 {baseDir}/scripts/setup_scheduled_tasks.py \\\n  --workspace . \\\n  --enable-config \\\n  --auto-register\n```\n\nThis script must detect whether `openclaw cron` is available. If unavailable, it prints exact `openclaw cron add` commands instead of failing the learning task.\n\nUse the local IANA timezone stored in `automation.timezone` for scheduled reminders. Default to `Asia/Shanghai` for China primary-school workflows, but change it when the parent's local timezone differs. Do not rely on an OpenClaw server's system timezone.\n\nAfter local files are changed:\n\n- If `git_sync.enabled`, `git_sync.auto_commit_after_task`, and `git_sync.auto_push_after_task` are true, run:\n\n```bash\npython3 {baseDir}/scripts/sync_learning_repo.py \\\n  --workspace . \\\n  --mode after-task \\\n  --message \"Update learning data\"\n```\n\n- Do not ask the parent to confirm pull, commit, or push again when these config flags are already true. Treat the config as the durable consent and state for this personal learning repository.\n- For grading tasks, pass `--task-kind grading`; if `git_sync.defer_push_after_grading` is true, the sync script commits locally and skips push until a later explicit sync/review/publish task.\n- If the sync script fails because credentials, rulesets, or conflicts block Git, keep the local task result, report the exact failure, and give the Deploy-key or conflict-resolution next step.\n\nWhen a repository has been configured after Git authorization succeeds, persist the state with:\n\n```bash\npython3 {baseDir}/scripts/check_git_sync.py \\\n  --workspace . \\\n  --check-push \\\n  --write-config \\\n  --auto-sync \\\n  --sync-full-learning-data \\\n  --public-repository-accepted\n```\n\nWhen Pages is configured, persist Pages auto-publishing with:\n\n```bash\npython3 {baseDir}/scripts/setup_github_pages_workflow.py \\\n  --workspace . \\\n  --public-repository-accepted\n```\n\nIf `.zhizhi-math-coach/config.json` is missing, do not assume automatic sync from README text alone. Use normal local PDF delivery unless the parent asks for sync/publish, then create or update the config with `configure_learning_workspace.py`, `check_git_sync.py --write-config`, or `setup_github_pages_workflow.py`.\n\n## Trigger And Sync Boundary\n\nThis skill is triggered by the user's OpenClaw request, such as `$zhizhi-math-coach 批改...` or `$zhizhi-math-coach 出一张...`, while the working directory is the personal learning project.\n\nFor GitHub sync, Pages, Deploy keys, public links, or cloud backup requests, read `references/github-sync-authorization.md` first, then `references/github-pages-publishing.md` only when Pages/public links are requested. Do not grade or generate a worksheet unless the user also asks for that. Return only SSH public keys, never private keys.\n\nFor scheduled-task setup phrases such as `开启定时任务`, `配置每日提醒`, `配置每周复盘`, `开启自动复习提醒`, or `配置 OpenClaw cron`, read `references/automation-openclaw.md` and configure reminders with `setup_scheduled_tasks.py`. Scheduled tasks default to reminders and suggestions only; do not enable automatic worksheet generation or record writes unless the parent explicitly asks.\n\nFor first-use local setup checks, read `references/openclaw-quickstart.md`. Do not mention GitHub setup during ordinary grading or worksheet generation unless the parent asks for cloud sync, push, public links, Pages, or a publish preflight fails.\n\nAlways treat the current workspace root as the personal learning project root for `memory/`, `weak-points/`, `mistakes/`, `records/`, `curriculum/`, `knowledge-points/`, `worksheets/`, and `site/`. The reusable skill repository only provides instructions, scripts, references, templates, and sanitized examples.\n\nIf the current workspace appears to be the reusable source repository `zhizhi-math-coach-openclaw` (for example it contains `docs/openclaw-release.md` and `examples/student-workspace/`), warn before writing student learning data. Do not warn merely because a personal workspace has an installed `skills/zhizhi-math-coach/` bundle from ClawHub. Only write student data into the source repository when the user explicitly says it is the intended personal learning workspace or the task is skill development with sanitized examples.\n\nDo not assume background sync unless `.zhizhi-math-coach/config.json` enables it. Local files are changed by the current task only:\n\n- grading or diagnosis may write `records/`, `mistakes/`, `weak-points/`, and evidence-backed `memory/` updates;\n- worksheet generation may write `worksheets/<date-topic>/worksheet-spec.json`, `worksheet.html`, `worksheet.pdf`, and `answer-key.md`;\n- publishing may write `site/` and `worksheets/<date-topic>/publish.json`.\n- GitHub Pages setup may write `.github/workflows/pages.yml` when the parent has chosen a public repository, selected GitHub Actions as the Pages source, and asked OpenClaw to set up publishing.\n\nWhen publishing, publish only the selected worksheet paths and rebuild `site/index.html` from selected and previously published worksheets, sorted by date descending. Do not publish unselected drafts just to rebuild the index. Include only public-safe metadata: date, practice status, title, child-facing file links, topic, grade, item count, and completion summary. Infer status from `worksheets/status.md` when available; do not expose answers or diagnosis details in `site/`.\n\nPDF is the default worksheet delivery format. After worksheet generation, return or send `worksheet.pdf` first when it exists. A model-authored PDF layout program can generate it without a browser. If no PDF generation route is available, return the local HTML when available and accurately describe the missing dependency. When the parent asks for a paper and answers, provide a separate `answer-key.pdf` too.\n\nGitHub sync and GitHub Pages are advanced cloud features, not required for normal use. If GitHub sync or Pages is configured and enabled in `.zhizhi-math-coach/config.json`, follow the config flags and the relevant sync/publishing reference.\n\nDo not run `git add`, `git commit`, or `git push` unless the parent explicitly asks to sync, publish, push, commit to GitHub, send a public link, or `.zhizhi-math-coach/config.json` enables automatic sync or automatic Pages publishing. When sync is requested or newly configured, read `references/github-sync-authorization.md` first and run the bundled preflight before committing or pushing. Do not require GitHub CLI or provider-level token configuration; a repository-scoped SSH deploy key is the preferred setup. If authorization is missing, return the PDF/local file paths and setup guidance instead of treating generation as failed. If the personal repository is public, warn before committing sensitive learning records or answer keys unless the parent has explicitly accepted full public learning-data sync in `.zhizhi-math-coach/config.json`.\n\nSkill resources are relative to `{baseDir}`:\n\n- `references/grading-diagnosis-rubric.md`: grading and diagnosis fields.\n- `references/progress-tracking.md`: record templates and status values.\n- `references/relapse-handling.md`: how to handle repeated mistakes after repair.\n- `references/curriculum-alignment.md`: textbook, China grade/semester, and copyright-safe curriculum alignment.\n- `references/school-calendar.md`: China school-year, semester, exam window, and holiday phase rules.\n- `references/knowledge-point-explanations.md`: parent explanation card and student summary rules.\n- `references/worksheet-strategies.md`: supported paper-generation strategies and confirmation questions.\n- `references/worksheet-generation.md`: low-token worksheet workflow.\n- `references/word-problem-variant-design.md`: how to design non-shallow word-problem variants.\n- `references/complex-problem-generation.md`: complex word-problem and review safeguards.\n- `references/geometry-generation.md`: optional reusable diagram tools and geometry checks.\n- `references/automation-openclaw.md`: scheduled reminders, channels, and automation boundaries.\n- `references/openclaw-quickstart.md`: first-use checklist, common prompts, Pages-ready checklist, and ruleset summary.\n- `references/github-pages-publishing.md`: public child-facing PDF/HTML worksheet publishing rules.\n- `references/github-sync-authorization.md`: GitHub SSH/token authorization, preflight checks, and sync boundaries.\n- `references/worksheet-standards.md`: child-facing printable worksheet rules.\n- `references/student-profile-template.md`: starter profile format.\n- `scripts/generate_worksheet.py`: generate worksheet HTML, student-facing PDF, and answer key from JSON.\n- `scripts/check_git_sync.py`: preflight whether the current machine can reach and push the personal GitHub repository.\n- `scripts/configure_learning_workspace.py`: create or update `.zhizhi-math-coach/config.json` for a personal learning repository.\n- `scripts/prepare_github_deploy_key.py`: generate a repository-scoped SSH deploy key and public-key setup instructions for GitHub Deploy keys.\n- `scripts/setup_github_pages_workflow.py`: create `.github/workflows/pages.yml` for publishing `site/` through GitHub Actions.\n- `scripts/setup_scheduled_tasks.py`: enable automation config and register OpenClaw cron reminder jobs when `openclaw cron` is available.\n- `scripts/sync_learning_repo.py`: pull, commit, and push configured learning-data changes without asking again when automatic sync is enabled.\n- `references/daily-grading-workflow.md`: foreground grading, automatic archive selection, validation, recording and sync.\n- `references/photo-intake.md`: full-paper evidence schema, knowledge assessment, durable jobs and the cron worker.\n- `scripts/photo_jobs.py`: enqueue, claim, heartbeat, finish, retry and inspect photo jobs.\n- `scripts/generate_visual_practice.py`: generate diagram-driven practice with verified matching answers.\n- `scripts/build_grading_context.py`: build one compact grading context from config, active context, and curriculum profile.\n- `scripts/validate_diagnosis_payload.py`: validate diagnosis JSON before writing records.\n- `scripts/record_grading_diagnosis.py`: write diagnosis, mistake-book, progress, weak-point, and optional memory updates from one compact JSON payload.\n- `scripts/run_log.py`: shared helper for `.zhizhi-math-coach/run-log.jsonl`.\n- `scripts/init_learning_workspace.py`: initialize a personal learning repository after the skill is installed.\n- `scripts/validate_worksheet_spec.py`: validate worksheet JSON without writing outputs.\n- `scripts/publish_html_site.py`: publish child-facing worksheet HTML/PDF into a GitHub Pages `site/` directory.\n- `scripts/publish_and_wait_pages.py`: publish `site/`, commit/push public-safe files, wait for GitHub Actions Pages deployment, and print ready URLs.\n- `assets/worksheet/question-types.json`: reusable worksheet item types.\n- `assets/worksheet/a4-single.html`: printable HTML template.\n\n## Before Grading\n\nRead `references/daily-grading-workflow.md`; for photos, also read `references/photo-intake.md`.\n\nFor photo input, preserve the original first and prioritize the parent's requested correction/explanation in the foreground. Document all visible questions in the full archive, including correct items. If `automation.allow_photo_archive` is enabled and the cron consumer is registered, let the worker complete the queued archive. Otherwise process the queue in the current session or a supported isolated worker. Never claim a background session exists merely because a file was queued.\n\nBuild compact context first:\n\n```bash\npython3 {baseDir}/scripts/build_grading_context.py --workspace . --format md\n```\n\nThe context includes recent knowledge assessment, due review suggestions, and warnings about stale active context. Use existing concept IDs. After reading the image, assign knowledge points and per-concept evidence from the actual question and written steps. Do not infer mastery from wrong answers alone or count hinted answers as independent performance.\n\nFor a queued photo, use `photo_jobs.py claim` and `finish` as documented in `photo-intake.md`; do not also record it separately. A photo worker may write its claimed local archive through `finish`, which performs validation, recording and evidence aggregation. It must not publish or generate additional worksheets unless separately configured.\n\nFor direct text or synchronous structured diagnosis:\n\n```bash\npython3 {baseDir}/scripts/record_grading_diagnosis.py \\\n  --workspace . --mode auto --input diagnosis-update.json\n```\n\n`auto` selects light recording or full archive from repeated confirmed causes, matching historical weak points and explicit updates. The script reports its reasons, retains the complete supplied evidence, and deduplicates retries. Explicit light/full modes remain available. Use `fast_grade_only` at the agent level when the parent says not to record; do not enqueue or invoke the recorder then.\n\nWhen Git auto-sync is enabled after recording, call `sync_learning_repo.py --mode after-task --task-kind grading`. Do not record the same batch twice to retry synchronization.\n\n## Before Explaining A Knowledge Point\n\nRead the relevant `knowledge-points/<topic-slug>.md` when it exists. If it does not exist, create the explanation in the same structure and recommend saving it in the user's personal learning project:\n\n1. Parent explanation script.\n2. Student-facing short version.\n3. Doing tips.\n4. Common errors and quick checks.\n5. Mastery evidence: can explain, can do same-structure items, can do variants, and can still solve after spacing.\n\nDo not use long textbook excerpts. Use textbook scope and terminology, then explain in original words.\n\n## Before Creating Practice\n\nWhen `zhizhi-math-worksheet` is available, use the boundary and handoff above. Read only the context needed for the requested paper; an attached full-paper reference normally supplies its own scope. For mistake-focused practice, supply known evidence without re-reading unrelated history.\n\nFor the compatibility path when the standalone skill is unavailable, selectively read relevant existing files:\n\n1. `memory/local-memory-rules.md`\n2. `memory/long-term.md`\n3. `memory/short-term.md`\n4. `curriculum/school-calendar.md`\n5. `curriculum/profile.md`\n6. `curriculum/scope.md`\n7. `curriculum/progress.md`\n8. The relevant `weak-points/*.md`\n9. The relevant `knowledge-points/*.md`\n10. `references/worksheet-strategies.md`\n11. `references/worksheet-standards.md`\n12. `references/worksheet-generation.md`\n13. `references/progress-tracking.md`\n\nIf the parent only says \"出一张练习卷\", use the latest confirmed curriculum scope, knowledge assessment and due reviews; default to a short 6–8 question, roughly 10-minute PDF and state these assumptions. Ask only if the missing scope would materially change the questions. Do not infer unlearned topics from grade alone. For \"按最近情况出\", prioritize weak concepts and due spaced reviews, and include a few maintenance questions for concepts already correct.\n\nIf the parent supplies a paper photo and asks for a similar variant, use that paper's concepts, section structure and approximate length as the brief; do not replace it with the short-drill default. Deliver a student paper and separate printable answers. Infer layout density from the reference and keep personal identifiers out of generated public examples.\n\nFor word problems, also read `references/word-problem-variant-design.md` and `references/complex-problem-generation.md`.\n\nDefault to model-designed worksheets as described in `references/worksheet-generation.md`: use the learning context to design the full paper, then apply the shared A4 print profile. Deliver printable PDF and page previews; do not ask the parent to choose rendering technologies. Question types and layout are not limited to the built-in registry. Read `references/geometry-generation.md` only when an optional reusable diagram/template tool helps. Preserve the learning objective and verify diagrams against answers. If using an actual image-generation tool, verify its text and math separately and state any missing capability honestly.\n\nFor model-authored HTML and optional template papers, use this validation/export workflow. Direct-PDF programs instead follow the separate review and rendering steps in `references/worksheet-generation.md`:\n\n```bash\npython3 {baseDir}/scripts/validate_worksheet_spec.py \\\n  worksheets/YYYY-MM-DD-topic/worksheet-spec.json\n\npython3 {baseDir}/scripts/generate_worksheet.py \\\n  worksheets/YYYY-MM-DD-topic/worksheet-spec.json\n```\n\nThe generator writes `worksheet.html`, `worksheet.pdf` when Chrome/Chromium is available, and `answer-key.md`. Return or send `worksheet.pdf` as the primary worksheet artifact.\n\nIf the workspace has public Pages mode configured and the parent accepts public worksheet links, publish only the child-facing worksheet HTML/PDF and wait for deployment:\n\n```bash\npython3 {baseDir}/scripts/publish_and_wait_pages.py \\\n  worksheets/YYYY-MM-DD-topic \\\n  --workspace <personal-learning-workspace> \\\n  --base-url https://<github-user>.github.io/<repo>\n```\n\nIf the parent wants a local-only preview or GitHub sync is not ready, publish local `site/` files without pushing:\n\n```bash\npython3 {baseDir}/scripts/publish_html_site.py \\\n  worksheets/YYYY-MM-DD-topic \\\n  --workspace <personal-learning-workspace> \\\n  --base-url https://<github-user>.github.io/<repo>\n```\n\nWhen Pages auto-publishing succeeds, reply with the PDF path/file, Pages index URL, and worksheet URL. Otherwise reply with file paths, item count, target weak point, and setup guidance for publishing. Do not paste full worksheet HTML or full answer keys unless asked.\n\n## Teaching Defaults\n\n- Use concise language appropriate to the parent, following the language preferences above.\n- Start from meaning, drawing, counters, or place value before formulas when understanding is fragile.\n- Ask the child to say the rule in plain language before writing the equation.\n- Keep one main diagnostic target per short practice.\n- If the student can answer correctly but slowly, diagnose fluency separately from understanding.\n- Do not turn handwriting difficulty into a math test. Prefer circling, ticking, matching, or printed choices for classification.\n- Use textbooks or curriculum references for scope, but create original targeted practice.\n- When a parent says a repeated application model is already understood, switch to small mixed variants that test transfer.\n\n## China School Calendar Defaults\n\nApply only when the learner follows a Chinese school calendar; local overrides take precedence:\n\n- School year starts on September 1 and ends the next August.\n- September 1 to January 31: first semester.\n- February 1 to August 31: second semester.\n- Winter break and summer break are local overrides, not fixed national dates.\n- Midterm and final windows must be configurable per school.\n\nIf `school_entry_year: 2025`, the date `2026-05-18` is normally `一年级下学期`. Still check local overrides and actual school progress before deciding scope.\n\n## Mistake Handling\n\nEvery wrong or uncertain item should include:\n\n`date / school year / grade / semester / term phase / source type / source file / item number / question / student answer / correct answer / error type / likely cause / related knowledge point / related weak point / relapse judgment / re-practice status / follow-up`.\n\nFor review before midterms or finals, filter by semester first, then group by weak point, recurrence, and `re-practice status`.\n\n## Relapse Handling\n\nIf a similar mistake appears after a weak point was marked `understood`, `consolidating`, or `mastered`, do not create a new isolated weak point. Decide whether it is:\n\n- `relapse`: same cause failed again.\n- `transfer-failure`: familiar form works, changed wording or mixed context fails.\n- `spaced-forgetting`: the prior repair faded after a gap.\n- `one-off-slip`: isolated error with nearby evidence of mastery.\n\nUpdate the old weak-point record with the new evidence and choose practice based on the recurrence type.\n\n## Worksheet Strategies\n\nSupported strategies:\n\n- `wrong_question_variant`: turn an existing wrong question into meaningful variants.\n- `weak_point_drill`: focus one weak point.\n- `exam_mistake_review`: midterm/final review weighted by real mistakes.\n- `relapse_repair`: repair relapse, transfer failure, or spaced forgetting.\n- `spaced_review`: small due review for old weak points.\n- `transfer_check`: changed wording/scenario/condition order.\n- `post_explanation_check`: 3 to 6 questions after explanation.\n- `diagnostic_probe`: separate concept, reading, modeling, calculation, and checking causes.\n- `mixed_maintenance`: current unit plus old weak points plus fluency.\n- `fluency_speed`: facts and speed when understanding is already stable.\n- `contrast_discrimination`: similar-looking items with different models.\n- `geometry_drill`: targeted geometry practice, with diagrams chosen to test the intended concept.\n\n## Automation Boundary\n\nScheduled OpenClaw tasks should default to reminders and suggestions in the configured local timezone:\n\n- Daily 20:30 local time: due practice, pending uploads, stale short-term observations.\n- Sunday 20:00 local time: weekly progress review and next-week suggestions.\n- End of semester: summary and holiday review pool.\n- Winter/summer break: weekly review suggestions.\n\nDo not let scheduled tasks automatically change weak-point status, memory, or generate new worksheets unless the parent explicitly asked for that behavior.\n\nOpenClaw cron is not declared as a skill-install manifest. It is registered by running the bundled setup script after the parent enables scheduled tasks:\n\n```bash\npython3 {baseDir}/scripts/setup_scheduled_tasks.py \\\n  --workspace . \\\n  --enable-config \\\n  --auto-register \\\n  --timezone Asia/Shanghai\n```\n\nIf `openclaw` is not available on the current machine, the script prints the `openclaw cron add` commands for the provider or parent to run later.\n\nFeishu notifications should prefer GitHub Pages worksheet links when configured; keep answer keys and diagnosis records outside published `site/` output.\n\n## Output Rules\n\nWhen generating worksheets:\n\n- Keep `worksheet.html` child-facing and answer-free.\n- Generate and return `worksheet.pdf` first when available; it is the direct print/share artifact.\n- Keep answers, grading labels, explanation notes, and reassessment rules in `answer-key.md`.\n- Only child-facing `worksheet.html` and `worksheet.pdf` may be published to GitHub Pages. Do not publish answer keys, records, memories, weak-point histories, student photos, or textbook files.\n- Preserve the editable source and separate checked answer manifest. For the bundled HTML generator, the source is `worksheet-spec.json`; for direct PDF, retain the layout program and `answer-manifest.json`.\n- Let the model design the complete paper, using direct PDF authoring or `render_mode: model_html`; the registry is only for optional reusable templates.\n- Apply the A4 typography appropriate to the reference paper or short drill, as described in `references/worksheet-standards.md`. The bundled HTML generator uses `assets/worksheet/a4-print.css`. Deliver previews from the actual PDF.\n- Include name/date/time/score fields and enough working space.\n- Prefer clarity and targeted diagnosis over forcing exactly one A4 page.\n- Complex word problems and geometry items must include answer details and review status.\n\nWhen grading:\n\n- Lead with confirmed mistakes and high-confidence causes.\n- Separate reading, modeling, calculation, expression, and checking errors.\n- Use `confidence: high / medium / low`.\n- For low-confidence causes, give 1 to 2 quick verification questions.\n- Group repeated errors by cause and teach the cause once.\n\nFile v0.3.0:_meta.json\n\n{\n  \"ownerId\": \"kn7cxpw3e2e3tg37c248mvktxh86y35a\",\n  \"slug\": \"zhizhi-math-coach\",\n  \"version\": \"0.3.0\",\n  \"publishedAt\": 1790844037559\n}\n\nFile v0.3.0:references/automation-openclaw.md\n\n# OpenClaw Automation\n\n## Boundary\n\nScheduled tasks should default to reminders and suggestions. They should not automatically change weak-point status, memory, records, or generate new worksheets unless the parent has explicitly requested that behavior.\n\nOpenClaw cron jobs are not declared by a skill manifest at install time. Use the bundled setup script after the parent explicitly enables scheduled reminders. The script detects whether `openclaw cron` is available; if not, it prints the exact commands instead of failing the learning workflow.\n\n```bash\npython3 {baseDir}/scripts/setup_scheduled_tasks.py \\\n  --workspace <personal-learning-workspace> \\\n  --enable-config \\\n  --auto-register \\\n  --timezone Asia/Shanghai\n```\n\nThe setup writes `.zhizhi-math-coach/config.json`:\n\n- `automation.enabled`: scheduled reminders are allowed.\n- `automation.auto_register_when_supported`: register via `openclaw cron` when the CLI exists.\n- `automation.timezone`: IANA timezone used by `openclaw cron --tz`; use the parent's local timezone, for example `Asia/Shanghai`.\n- `automation.allow_record_writes`: default `false`.\n- `automation.allow_auto_worksheet_generation`: default `false`.\n\n## Recommended Schedule\n\n- Opt-in photo archival: every 5 minutes, claim at most one queued photo batch in an isolated multimodal session; see `photo-intake.md`.\n- Daily 20:30 local time: due review reminders, pending upload reminders, and stale short-term observations.\n- Sunday 20:00 local time: weekly progress review and next-week suggestions.\n- End of semester: generate a summary and holiday review pool.\n- Winter/summer break: weekly holiday review suggestions.\n\n## Suggested Task Outputs\n\n- due weak points;\n- pending worksheets not yet graded;\n- short explanation cards that may help parents;\n- suggested next worksheet strategy;\n- warnings about low-confidence or missing evidence.\n\n## Channels\n\nThe learning logic should not depend on a channel. Start with local records and OpenClaw conversation output.\n\nFor push delivery, use a channel adapter. Feishu/Lark is the default v1 recommendation when available because it supports chat, files, and operational workflows. DingTalk can be added later through a channel/plugin adapter if the environment supports it.\n\n## Safety\n\n- Do not send sensitive student files to public channels.\n- Do not push full answer keys into a child-facing chat.\n- Do not infer new mastery status from time alone.\n- Do not schedule automatic worksheet generation by default.\n- Do not auto-create cron jobs merely because the skill was installed; require an explicit setup trigger or existing automation config.\n\n## Photo Archive Worker\n\n```bash\npython3 {baseDir}/scripts/setup_scheduled_tasks.py \\\n  --workspace <personal-learning-workspace> \\\n  --enable-config --photo-worker --auto-register --timezone Asia/Shanghai\n```\n\n`--photo-worker` sets `automation.allow_photo_archive: true` and adds a `*/5 * * * *` isolated worker. Its write authorization applies only to explicitly queued photo batches. General reminder tasks remain read-only unless `allow_record_writes` is separately enabled. The worker documents all questions and updates per-knowledge-point evidence through `photo_jobs.py finish`; it does not enable automatic worksheet creation or publishing.\n\nThe queue has leases, heartbeat, capped retries and persistent failure details. Configure a multimodal model that can open the saved local images; a text-only cron model cannot perform the task. If the CLI/gateway is unavailable, printed commands are setup instructions, not a registered or running worker. Verify a real image run in the target environment.\n\nFile v0.3.0:references/complex-problem-generation.md\n\n# Complex Problem Generation\n\n## Purpose\n\nUse this reference for multi-step word problems, condition filtering, compare-after-intermediate problems, and exam review items.\n\n## Generation Rule\n\nAI may design the item, but the worksheet spec must preserve the structure:\n\n- problem type;\n- known quantities;\n- unknown quantity;\n- required conditions;\n- distractor or unused conditions;\n- intermediate quantity;\n- final operation;\n- answer sentence;\n- `answer_detail` with the full solving path.\n\n## Review Status\n\nUse one of:\n\n- `draft`: not ready to print.\n- `model_reviewed`: reviewed by another model or a second pass.\n- `human_review_needed`: print only after parent/teacher confirmation.\n- `approved`: ready to print.\n\nComplex items should not be printed when `review_status` is `draft` or missing.\n\n## Difficulty Control\n\nIf the target is reading or modeling, keep arithmetic easy enough not to hide the diagnosis.\n\nChange one or two dimensions at a time:\n\n- scenario;\n- final question wording;\n- condition order;\n- distractor condition;\n- intermediate quantity;\n- calculation load.\n\n## Answer Key\n\nFor multi-step items, `answer_detail` must show:\n\n- each intermediate value;\n- why a condition is used or ignored;\n- the final equation or comparison;\n- the final answer sentence and unit.\n\nFile v0.3.0:references/curriculum-alignment.md\n\n# Curriculum Alignment\n\n## Purpose\n\nUse curriculum files to keep grading, explanations, and worksheets aligned with the student's real school scope.\n\nThis project may reference external textbook indexes or local PDF paths in a personal learning workspace, but the public skill must not include textbook PDFs, screenshots, scans, OCR dumps, or copied problem sets.\n\n## Workspace Files\n\n- `curriculum/profile.md`: student grade, textbook edition, textbook volume, source references, and current unit.\n- `curriculum/scope.md`: unit and knowledge-point map.\n- `curriculum/progress.md`: learned/not-yet-learned topics, school progress, and exam scope.\n- `curriculum/school-calendar.md`: school-year, semester, exam, and holiday windows.\n\n## China Textbook Example\n\nFor a first-grade student using 人教版 mathematics, the personal profile can cite:\n\n```text\nTextbook source: https://github.com/TapXWorld/ChinaTextbook/tree/master/小学/数学/人教版\nTextbook volume: 一年级下册\n```\n\nUse that source to identify grade/volume and broad unit scope. Do not copy full textbook pages or exercises into the public repository.\n\n## Scope Rules\n\n- Daily practice should stay within learned content unless the parent explicitly asks for preview.\n- Midterm review should cover this semester's learned units and actual mistakes.\n- Final review should cover the whole semester, weighted by weak points and relapse history.\n- Winter break should repair first-semester weak points before previewing next semester.\n- Summer break should review the whole school year before previewing the next grade.\n\n## Output Rules\n\nWhen using curriculum context, state:\n\n- grade and semester;\n- textbook edition and volume;\n- current unit or scope;\n- whether the item is current review, remedial, transfer check, exam review, or preview.\n\nGenerate original diagnostic and practice items. Use textbook terms and scope, not copied textbook text.\n\nFile v0.3.0:references/daily-grading-workflow.md\n\n# Daily Grading Workflow\n\nUse this reference for worksheet photos, teacher-marked papers, wrong-question batches, and direct `question + student answer` grading. For image intake, full-paper evidence, knowledge assessment and asynchronous execution, `photo-intake.md` is the primary workflow.\n\n## One-Turn Modes\n\nDo not make the parent send a second message just to save an ordinary grading result.\n\n- Default recorder mode: `auto` (chooses light/full archive from evidence). Foreground feedback remains fast.\n- Use `fast_grade_only` only when the parent explicitly says `只批改`, `先不记录`, `不要落库`, or the workspace is not initialized.\n- Use `full_archive` when the parent explicitly asks for full recording/review, or when the evidence itself justifies it.\n\n`fast_grade_light_record` grades, returns the parent-facing summary, and writes a light local record in the same task. The light record may update `records/`, the relevant mistake book, and `memory/active-context.md`; it should not update global/user-level `MEMORY.md`, run broad history scans, or change old weak-point statuses.\n\nAuto-upgrade to `full_archive` when one or more of these are true:\n\n- Two or more wrong or uncertain items in the same batch point to the same cause or weak point.\n- A wrong item directly matches an active weak point in `memory/active-context.md` and looks like relapse, transfer failure, or spaced forgetting.\n- The evidence is a formal test, teacher-marked paper, phase review, midterm/final review, or parent-provided official school mistake set.\n- The batch gives high-confidence evidence for a new durable weak point, not just a one-off slip.\n- The parent explicitly asks for `完整记录`, `完整归档`, `纳入错题本`, `更新薄弱项`, `阶段性复盘`, or `做复盘`.\n\nWhen auto-upgrading, keep reads selective: start from the active context, then open only matching weak-point and mistake history. Do not update global/user-level `MEMORY.md` unless the update is about a stable workflow rule or the parent explicitly asks.\n\n## Context Build\n\nBefore grading, build one compact context bundle:\n\n```bash\npython3 {baseDir}/scripts/build_grading_context.py \\\n  --workspace . \\\n  --format md\n```\n\nThe context builder reads `.zhizhi-math-coach/config.json`, `memory/active-context.md`, and `curriculum/profile.md`, then returns a compact grading context and appends `.zhizhi-math-coach/run-log.jsonl`.\n\nOnly read fallback files such as `memory/long-term.md`, `memory/short-term.md`, `curriculum/progress.md`, or `records/learning-progress.md` when the context builder warns that `memory/active-context.md` is missing, stale, or incomplete.\n\nKeep `memory/active-context.md` under 2500 bytes. If it grows beyond that, summarize it before recording new evidence.\n\n## Foreground And Background\n\nSave original photos and return the urgent correction first. A registered OpenClaw cron consumer or supported isolated session can complete the queued full archive later; see `photo-intake.md`. If no worker runs, process it in the current session and do not claim it is running in the background.\n\nA worker receives one leased job, the saved images and compact context. It can open matching history and call `photo_jobs.py finish` to write its local archive. Keep writes tied to that claimed job, and leave unrelated files and public publishing alone. For direct text, use the recorder in the main session.\n\n## History Reads\n\nAfter the first image pass, choose the final recording mode from evidence:\n\n- `fast_grade_light_record`: skip history reads.\n- `full_archive`: use `rg -n \"<topic|cause|slug>\" weak-points mistakes records/learning-progress.md` or direct filenames to find relevant history. Open only matching files.\n\nRead `references/relapse-handling.md` only when a matching weak point was previously `补齐理解`, `待巩固`, `已掌握`, or the new evidence looks like recurrence.\n\nDo not read `knowledge-points/*.md` during ordinary grading unless creating or updating a reusable explanation card. Do not read unrelated GitHub setup, Pages publishing, sync, or automation references during ordinary grading.\n\n## Recorder Payload\n\nCreate a compact `diagnosis-update.json`. For full-paper input, provide `items` for **every visible question** using the schema in `photo-intake.md`; correct items are required positive evidence. The recorder derives the mistake subset and counts. The fields below remain supported for legacy wrong-question-only input, which cannot describe complete paper coverage.\n\nRequired top-level keys:\n\n- `date`, `source`, `source_type`, `grade`, `semester`, `total_items`, `correct_items`, `overall`.\n\nCommon optional top-level keys:\n\n- `source_slug`, `semester_range`, `term_phase`, `scope`, `mistake_book`, `cause_summary`, `teaching_and_practice`, `next_steps`, `progress`, `weak_points`, `short_term_notes`, `long_term_notes`, `active_context_md`.\n\nRequired `mistakes[]` keys:\n\n- `item_no`, `question`, `student_answer`, `correct_answer`, `result`, `error_type`, `cause`, `confidence`, `remediation`.\n\nUseful `mistakes[]` optional keys:\n\n- `historical_status`, `relapse_judgment`, `evidence`, `weak_point_slug`, `weak_point_title`, `repractice_status`.\n\nProvide `weak_points[]` only when the selected mode is `full_archive` or the evidence should explicitly update a durable weak-point file. Ordinary light records should not create weak-point files merely because a wrong item has a cause.\n\nUse `active_context_md` as the complete replacement text for `memory/active-context.md` when the compact current context should change.\n\n## Validate And Record\n\nValidate first:\n\n```bash\npython3 {baseDir}/scripts/validate_diagnosis_payload.py \\\n  --workspace . \\\n  --mode auto \\\n  --input diagnosis-update.json\n```\n\nRecord after validation:\n\n```bash\npython3 {baseDir}/scripts/record_grading_diagnosis.py \\\n  --workspace . \\\n  --mode auto \\\n  --input diagnosis-update.json\n```\n\nThe recorder validates internally, so the separate validator is optional. Use `--mode auto` normally; it reports the selected mode and reasons. Explicit `--mode full_archive` remains available. Recording the identical payload again returns the original result without appending duplicate evidence. `--dry-run` performs no writes, including logs.\n\nBoth scripts append `.zhizhi-math-coach/run-log.jsonl`.\n\n## Sync\n\nIf automatic Git sync is enabled after local files are written:\n\n```bash\npython3 {baseDir}/scripts/sync_learning_repo.py \\\n  --workspace . \\\n  --mode after-task \\\n  --task-kind grading \\\n  --message \"Update learning data\"\n```\n\nWhen `.zhizhi-math-coach/config.json` has `git_sync.defer_push_after_grading: true`, grading sync commits locally and skips push. A later explicit sync, review, worksheet, or publish task can push.\n\nFile v0.3.0:references/geometry-generation.md\n\n# Geometry Generation\n\n## Purpose\n\nGenerate geometry practice that is reproducible, printable, and checkable.\n\nThese are optional internal tools, not the required public workflow. Default paper design follows `worksheet-generation.md`; parents receive the paper preview and print file without choosing a drawing technology. Use these helpers when repeatability is useful.\n\n## Supported V1 Pattern\n\nUse `geometry_problem` items with:\n\n```json\n{\n  \"type\": \"geometry_problem\",\n  \"prompt\": \"求下面长方形的周长。\",\n  \"geometry_spec\": {\n    \"type\": \"rectangle\",\n    \"width_label\": \"8 cm\",\n    \"height_label\": \"5 cm\"\n  },\n  \"answer_prompt\": \"周长是\",\n  \"answer_suffix\": \"cm\",\n  \"answer_detail\": \"`(8 + 5) × 2 = 26`，周长是 26 cm。\"\n}\n```\n\nThe renderer also supports `polygon`, `shape_collection`, `clock`, `number_line` and `grid`. Diagrams are bounded and validated before rendering.\n\n## Automatic Visual Variants\n\n```bash\npython3 {baseDir}/scripts/generate_visual_practice.py \\\n  --kind mixed --count 4 --seed 12 \\\n  --output worksheets/visual-practice/worksheet-spec.json\npython3 {baseDir}/scripts/generate_worksheet.py worksheets/visual-practice/worksheet-spec.json\n```\n\nSupported template kinds: `shape_collection` (count shapes), `clock` (whole/half hours), `number_line` (missing values up to 20), `grid` (count shaded cells), and `mixed`. Change `--seed` for reproducible variants. `--kind auto --workspace .` selects a supported visual knowledge point from the saved assessment, prioritizing weak/uncertain topics.\n\nStable IDs used for automatic topic selection:\n\n| Knowledge-point ID | Template |\n| --- | --- |\n| `geometry.shape-recognition` | shape_collection |\n| `time.clock-reading` | clock |\n| `number.number-line` | number_line |\n| `geometry.grid-counting` | grid |\n\nGenerated items use `review_status: template_verified`: the validator recalculates the expected prompt and answer from the geometry and rejects mismatches. This status does not mean a human reviewed the question. Edited/custom prompts should use the normal model/human review workflow. Clock hour hands include minute-dependent movement; hidden number-line values and digital clock answers do not appear in SVG accessibility text.\n\n## Diagram Data\n\n- `shape_collection`: `shapes` contains `kind` (`circle`, `triangle`, `square`, `rectangle`), `x`, `y`, `width`, `height`. Coordinates use the specified canvas; circle/square dimensions must match.\n- `clock`: `hour` 0–23 and `minute` 0–59; use a canvas at least 180×180. The drawing represents a 12-hour dial, not an AM/PM indicator.\n- `number_line`: integer `start`, `end`, positive `step`, and `hidden_values`; at most 20 intervals.\n- `grid`: `rows`, `cols` up to 12 and unique zero-based `[row, col]` `shaded_cells`.\n- `polygon`: three or more `[x, y]` `points` inside the canvas. The model must check side relationships and avoid unintended self-intersections; coordinate validation alone does not prove the mathematical diagram is correct.\n\nFor photo-derived variants, identify the tested concept and spatial relations before changing the diagram. A photo can contain overlapping shapes, folding, solids or perspective not covered by these templates. Preserve its original and diagram description; do not replace it with an unrelated easy template or claim exact reconstruction. Use custom structured geometry plus explicit review where feasible.\n\n## Quality Rules\n\n- Labels must be readable after printing.\n- Diagrams must not reveal answers that should be solved.\n- The child-facing worksheet must not contain `answer_detail`.\n- The answer key must include the formula and intermediate values.\n- If a diagram is ambiguous or cannot be rendered deterministically, mark it `human_review_needed`.\n\n## Future Geometry Extensions\n\n- angles;\n- measuring lines;\n- composite area and perimeter;\n- grid-based shapes;\n- symmetry and folding;\n- unit conversion around area and perimeter.\n\nFile v0.3.0:references/github-pages-publishing.md\n\n# GitHub Pages Publishing\n\n## Purpose\n\nUse GitHub Pages for child-facing worksheet HTML/PDF when the parent accepts public worksheet links. PDF delivery stays first: generate or send `worksheet.pdf` before waiting for Pages when the channel supports file replies.\n\nDo not publish answers, diagnosis records, long-term memory, weak-point history, student photos, school papers, or textbook files.\n\n## Default Flow\n\nAfter generating a worksheet PDF/HTML in a Pages-enabled public personal repository, publish and wait when a public link is needed or when `.zhizhi-math-coach/config.json` has `pages.auto_publish_worksheets: true`:\n\n```bash\npython3 {baseDir}/scripts/publish_and_wait_pages.py \\\n  worksheets/YYYY-MM-DD-topic \\\n  --workspace <personal-learning-workspace> \\\n  --base-url https://<github-user>.github.io/<repo>\n```\n\nThe script:\n\n1. Copies public-safe worksheet HTML and `worksheet.pdf` into `site/` when the PDF exists.\n2. Rebuilds `site/index.html` from all worksheets.\n3. Pulls the remote branch with `git pull --rebase --autostash` before committing, unless `--no-pull` is passed.\n4. Stages only public-safe publishing files: `site/`, `.github/workflows/pages.yml` when present, and `worksheets/*/publish.json`.\n5. Commits and pushes to the configured branch.\n6. If push is rejected because the remote changed, pulls with rebase and retries once.\n7. Waits for the GitHub Actions Pages workflow for that commit.\n8. Checks the Pages index and worksheet URLs before reporting `pages-ready`.\n\nUse local-only publishing when GitHub sync is unavailable or the parent asks only for files:\n\n```bash\npython3 {baseDir}/scripts/publish_html_site.py \\\n  worksheets/YYYY-MM-DD-topic \\\n  --workspace <personal-learning-workspace> \\\n  --base-url https://<github-user>.github.io/<repo>\n```\n\nThe publisher writes:\n\n- `site/index.html`: public worksheet list.\n- `site/worksheets/<slug>/index.html`: child-facing worksheet page.\n- `site/worksheets/<slug>/worksheet.pdf`: child-facing worksheet PDF when generated.\n- `site/.nojekyll`: disables Jekyll processing.\n- `worksheets/YYYY-MM-DD-topic/publish.json`: publication manifest.\n\nThe index is rebuilt from all public-safe worksheet HTML files under `worksheets/`, even when publishing a single worksheet path. It sorts worksheets by date descending and shows date, practice status, title, file links, topic, grade, item count, and completion summary. Practice status is inferred from `worksheets/status.md` when available; otherwise a generated worksheet is shown as `未练习`.\n\nThis only produces local `site/` files. A public URL requires the personal learning repository to be pushed to GitHub and GitHub Pages to be configured for that repository.\n\n## Public Repository Mode\n\nIf the parent chooses to make the personal learning repository public to avoid paid private Pages:\n\n- Clarify that the whole public repository is viewable, not only the Pages site. Public Pages makes `site/` easy to open, but GitHub users can also browse tracked files outside `site/`.\n- Use this mode only when the parent accepts public visibility of committed files, or when the repository commits only public-safe files.\n- Do not add collaborators unless they should be able to push.\n- For `main`, public GitHub repositories are read-only to non-collaborators by default. Recommend branch protection/rulesets to block force pushes and branch deletion. Do not enable a rule that requires pull requests or blocks direct pushes if OpenClaw is expected to push `site/` and workflow updates directly.\n\nRecommended GitHub Pages setting:\n\n1. Repository Settings -> Pages.\n2. Build and deployment -> Source: `GitHub Actions`.\n3. If not present, create `.github/workflows/pages.yml` with the bundled setup script:\n\n```bash\npython3 {baseDir}/scripts/setup_github_pages_workflow.py \\\n  --workspace <personal-learning-workspace>\n```\n\nIf GitHub sync is already authorized through the Deploy key, OpenClaw may commit and push this workflow after the parent asks it to set up Pages:\n\n```bash\ngit add .github/workflows/pages.yml site\ngit commit -m \"Configure GitHub Pages publishing\"\ngit push\n```\n\nThe push triggers the GitHub Actions Pages deployment. Return the expected URL `https://<github-user>.github.io/<repo>/` and tell the parent that the first deployment may take a short time.\n\nIn normal worksheet generation, first return or send the generated `worksheet.pdf` when available. If Pages mode is already configured in `.zhizhi-math-coach/config.json`, run `publish_and_wait_pages.py` after `generate_worksheet.py` without asking again when `pages.auto_publish_wo\n\nArchive v0.2.14: 40 files, 96438 bytes\n\nFiles: agents/openai.yaml (333b), assets/worksheet/a4-single.html (3938b), assets/worksheet/question-types.json (3785b), references/automation-openclaw.md (2495b), references/complex-problem-generation.md (1292b), references/curriculum-alignment.md (1919b), references/daily-grading-workflow.md (6067b), references/geometry-generation.md (1224b), references/github-pages-publishing.md (7122b), references/github-sync-authorization.md (9952b), references/grading-diagnosis-rubric.md (3754b), references/knowledge-point-explanations.md (1296b), references/openclaw-quickstart.md (5949b), references/progress-tracking.md (2713b), references/relapse-handling.md (1821b), references/school-calendar.md (1873b), references/student-profile-template.md (1483b), references/word-problem-variant-design.md (2754b), references/worksheet-generation.md (3125b), references/worksheet-standards.md (2482b), references/worksheet-strategies.md (2197b), scripts/build_grading_context.py (7851b), scripts/check_git_sync.py (6069b), scripts/configure_learning_workspace.py (6573b), scripts/generate_worksheet.py (17325b), scripts/init_learning_workspace.py (17810b), scripts/learning_workspace_config.py (6985b), scripts/prepare_github_deploy_key.py (7683b), scripts/publish_and_wait_pages.py (12357b), scripts/publish_html_site.py (16483b), scripts/record_grading_diagnosis.py (21119b), scripts/run_log.py (949b), scripts/setup_github_pages_workflow.py (3736b), scripts/setup_scheduled_tasks.py (8618b), scripts/sync_learning_repo.py (9587b), scripts/validate_diagnosis_payload.py (5756b), scripts/validate_worksheet_spec.py (3656b), skill-card.md (3342b), SKILL.md (28495b), _meta.json (137b)\n\nArchive v0.2.13: 35 files, 80658 bytes\n\nFiles: agents/openai.yaml (333b), assets/worksheet/a4-single.html (3938b), assets/worksheet/question-types.json (3785b), references/automation-openclaw.md (2495b), references/complex-problem-generation.md (1292b), references/curriculum-alignment.md (1919b), references/geometry-generation.md (1224b), references/github-pages-publishing.md (7122b), references/github-sync-authorization.md (9952b), references/grading-diagnosis-rubric.md (3754b), references/knowledge-point-explanations.md (1296b), references/openclaw-quickstart.md (5949b), references/progress-tracking.md (2713b), references/relapse-handling.md (1821b), references/school-calendar.md (1873b), references/student-profile-template.md (1483b), references/word-problem-variant-design.md (2754b), references/worksheet-generation.md (3125b), references/worksheet-standards.md (2482b), references/worksheet-strategies.md (2197b), scripts/check_git_sync.py (5822b), scripts/configure_learning_workspace.py (6237b), scripts/generate_worksheet.py (17325b), scripts/init_learning_workspace.py (16577b), scripts/learning_workspace_config.py (6938b), scripts/prepare_github_deploy_key.py (7683b), scripts/publish_and_wait_pages.py (12357b), scripts/publish_html_site.py (16483b), scripts/setup_github_pages_workflow.py (3736b), scripts/setup_scheduled_tasks.py (8618b), scripts/sync_learning_repo.py (7460b), scripts/validate_worksheet_spec.py (3656b), skill-card.md (3768b), SKILL.md (27291b), _meta.json (137b)\n\nArchive v0.2.12: 35 files, 80377 bytes\n\nFiles: agents/openai.yaml (333b), assets/worksheet/a4-single.html (3938b), assets/worksheet/question-types.json (3785b), references/automation-openclaw.md (2341b), references/complex-problem-generation.md (1292b), references/curriculum-alignment.md (1919b), references/geometry-generation.md (1224b), references/github-pages-publishing.md (7122b), references/github-sync-authorization.md (9952b), references/grading-diagnosis-rubric.md (3754b), references/knowledge-point-explanations.md (1296b), references/openclaw-quickstart.md (5865b), references/progress-tracking.md (2713b), references/relapse-handling.md (1821b), references/school-calendar.md (1873b), references/student-profile-template.md (1483b), references/word-problem-variant-design.md (2754b), references/worksheet-generation.md (3125b), references/worksheet-standards.md (2482b), references/worksheet-strategies.md (2197b), scripts/check_git_sync.py (5822b), scripts/configure_learning_workspace.py (5947b), scripts/generate_worksheet.py (17325b), scripts/init_learning_workspace.py (16416b), scripts/learning_workspace_config.py (6908b), scripts/prepare_github_deploy_key.py (7683b), scripts/publish_and_wait_pages.py (12357b), scripts/publish_html_site.py (16483b), scripts/setup_github_pages_workflow.py (3736b), scripts/setup_scheduled_tasks.py (8234b), scripts/sync_learning_repo.py (7460b), scripts/validate_worksheet_spec.py (3656b), skill-card.md (4056b), SKILL.md (26977b), _meta.json (137b)\n\nArchive v0.2.11: 34 files, 75677 bytes\n\nFiles: agents/openai.yaml (333b), assets/worksheet/a4-single.html (3938b), assets/worksheet/question-types.json (3785b), references/automation-openclaw.md (1436b), references/complex-problem-generation.md (1292b), references/curriculum-alignment.md (1919b), references/geometry-generation.md (1224b), references/github-pages-publishing.md (7122b), references/github-sync-authorization.md (9952b), references/grading-diagnosis-rubric.md (3754b), references/knowledge-point-explanations.md (1296b), references/openclaw-quickstart.md (5168b), references/progress-tracking.md (2713b), references/relapse-handling.md (1821b), references/school-calendar.md (1873b), references/student-profile-template.md (1483b), references/word-problem-variant-design.md (2754b), references/worksheet-generation.md (3125b), references/worksheet-standards.md (2482b), references/worksheet-strategies.md (2197b), scripts/check_git_sync.py (5822b), scripts/configure_learning_workspace.py (4768b), scripts/generate_worksheet.py (17325b), scripts/init_learning_workspace.py (16416b), scripts/learning_workspace_config.py (6138b), scripts/prepare_github_deploy_key.py (7683b), scripts/publish_and_wait_pages.py (12357b), scripts/publish_html_site.py (16483b), scripts/setup_github_pages_workflow.py (3736b), scripts/sync_learning_repo.py (7460b), scripts/validate_worksheet_spec.py (3656b), skill-card.md (3357b), SKILL.md (25444b), _meta.json (137b)\n\nArchive v0.2.10: 31 files, 66116 bytes\n\nFiles: agents/openai.yaml (333b), assets/worksheet/a4-single.html (3938b), assets/worksheet/question-types.json (3785b), references/automation-openclaw.md (1436b), references/complex-problem-generation.md (1292b), references/curriculum-alignment.md (1919b), references/geometry-generation.md (1224b), references/github-pages-publishing.md (6588b), references/github-sync-authorization.md (8800b), references/grading-diagnosis-rubric.md (3754b), references/knowledge-point-explanations.md (1296b), references/openclaw-quickstart.md (4336b), references/progress-tracking.md (2713b), references/relapse-handling.md (1821b), references/school-calendar.md (1873b), references/student-profile-template.md (1483b), references/word-problem-variant-design.md (2754b), references/worksheet-generation.md (2884b), references/worksheet-standards.md (2482b), references/worksheet-strategies.md (2197b), scripts/check_git_sync.py (3593b), scripts/generate_worksheet.py (17325b), scripts/init_learning_workspace.py (16045b), scripts/prepare_github_deploy_key.py (7683b), scripts/publish_and_wait_pages.py (10256b), scripts/publish_html_site.py (16483b), scripts/setup_github_pages_workflow.py (2056b), scripts/validate_worksheet_spec.py (3656b), skill-card.md (3561b), SKILL.md (22465b), _meta.json (137b)\n\nArchive v0.2.9: 30 files, 64526 bytes\n\nFiles: agents/openai.yaml (364b), assets/worksheet/a4-single.html (3938b), assets/worksheet/question-types.json (3785b), references/automation-openclaw.md (1436b), references/complex-problem-generation.md (1292b), references/curriculum-alignment.md (1919b), references/geometry-generation.md (1224b), references/github-pages-publishing.md (6588b), references/github-sync-authorization.md (8800b), references/grading-diagnosis-rubric.md (3754b), references/knowledge-point-explanations.md (1296b), references/openclaw-quickstart.md (4336b), references/progress-tracking.md (2713b), references/relapse-handling.md (1821b), references/school-calendar.md (1873b), references/student-profile-template.md (1483b), references/word-problem-variant-design.md (2754b), references/worksheet-generation.md (2884b), references/worksheet-standards.md (2482b), references/worksheet-strategies.md (2197b), scripts/check_git_sync.py (3593b), scripts/generate_worksheet.py (17325b), scripts/init_learning_workspace.py (16045b), scripts/prepare_github_deploy_key.py (7683b), scripts/publish_and_wait_pages.py (10256b), scripts/publish_html_site.py (16483b), scripts/setup_github_pages_workflow.py (2056b), scripts/validate_worksheet_spec.py (3656b), SKILL.md (22493b), _meta.json (136b)\n\nArchive v0.2.8: 30 files, 64399 bytes\n\nFiles: agents/openai.yaml (337b), assets/worksheet/a4-single.html (3938b), assets/worksheet/question-types.json (3785b), references/automation-openclaw.md (1436b), references/complex-problem-generation.md (1292b), references/curriculum-alignment.md (1919b), references/geometry-generation.md (1224b), references/github-pages-publishing.md (6588b), references/github-sync-authorization.md (8800b), references/grading-diagnosis-rubric.md (3754b), references/knowledge-point-explanations.md (1296b), references/openclaw-quickstart.md (4336b), references/progress-tracking.md (2713b), references/relapse-handling.md (1821b), references/school-calendar.md (1873b), references/student-profile-template.md (1483b), references/word-problem-variant-design.md (2754b), references/worksheet-generation.md (2884b), references/worksheet-standards.md (2482b), references/worksheet-strategies.md (2197b), scripts/check_git_sync.py (3593b), scripts/generate_worksheet.py (17325b), scripts/init_learning_workspace.py (16045b), scripts/prepare_github_deploy_key.py (7683b), scripts/publish_and_wait_pages.py (10256b), scripts/publish_html_site.py (16483b), scripts/setup_github_pages_workflow.py (2056b), scripts/validate_worksheet_spec.py (3656b), SKILL.md (22505b), _meta.json (136b)\n\nArchive v0.2.7: 30 files, 64398 bytes\n\nFiles: agents/openai.yaml (337b), assets/worksheet/a4-single.html (3938b), assets/worksheet/question-types.json (3785b), references/automation-openclaw.md (1436b), references/complex-problem-generation.md (1292b), references/curriculum-alignment.md (1919b), references/geometry-generation.md (1224b), references/github-pages-publishing.md (6588b), references/github-sync-authorization.md (8800b), references/grading-diagnosis-rubric.md (3754b), references/knowledge-point-explanations.md (1296b), references/openclaw-quickstart.md (4336b), references/progress-tracking.md (2713b), references/relapse-handling.md (1821b), references/school-cale...","readmeExcerpt":"Skill: Zhizhi Math Coach Owner: linzi007 Summary: Grade math papers, explain mistakes, and track learning Tags: china:0.3.1, education:0.3.1, latest:0.3.1, math:0.3.1, parenting:0.3.1, worksheet:0.3.1 Version history: v0.3.1 | 2026-10-01T08:59:35.622Z | user Clarify integration with @linzi007/zhizhi-math-worksheet: same-agent handoff of selected questions, scope and language preferences; return PDFs, source mappings ","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"python3 {baseDir}/scripts/init_learning_workspace.py \\\n  --workspace . \\\n  --student-name <nickname> \\\n  --school-entry-year <YYYY> \\\n  --grade <一年级> \\\n  --semester <上学期|下学期> \\\n  --textbook-edition <人教版> \\\n  --textbook-volume <一年级下册>"},{"language":"bash","snippet":"python3 {baseDir}/scripts/sync_learning_repo.py \\\n  --workspace . \\\n  --mode before-task"},{"language":"bash","snippet":"python3 {baseDir}/scripts/setup_scheduled_tasks.py \\\n  --workspace . \\\n  --enable-config \\\n  --auto-register"},{"language":"bash","snippet":"python3 {baseDir}/scripts/sync_learning_repo.py \\\n  --workspace . \\\n  --mode after-task \\\n  --message \"Update learning data\""},{"language":"bash","snippet":"python3 {baseDir}/scripts/check_git_sync.py \\\n  --workspace . \\\n  --check-push \\\n  --write-config \\\n  --auto-sync \\\n  --sync-full-learning-data \\\n  --public-repository-accepted"},{"language":"bash","snippet":"python3 {baseDir}/scripts/setup_github_pages_workflow.py \\\n  --workspace . \\\n  --public-repository-accepted"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: zhizhi-math-coach\ndescription: \"Primary-school math coaching: grade worksheet photos, document full papers, track evidence-based knowledge mastery, explain mistakes and plan follow-up practice. Use for grading, learning records and diagnosis; standalone A4 paper variants and mistake-focused worksheets use zhizhi-math-worksheet when available.\"\n---\n\n# Zhizhi Math Coach\n\n## Language And Regional Scope\n\nReply in the user's language unless they specify another. Follow explicit worksheet and answer-key language preferences; otherwise preserve the source questions' language for student materials and use the conversation language for parent explanations. Localize generated headings and directions, not just the questions. Do not produce bilingual pages unless requested.\n\nLanguage does not establish a country's grade levels, school dates, textbook, currency, units, or timezone. Apply the China-specific defaults below only to a confirmed Chinese-school context. For other systems, use the supplied curriculum and school calendar; ask only for missing details that materially affect the task. Never convert grade names across systems by guessing.\n\nThe bundled archive initializer, record summaries, and older fixed question templates still contain Chinese labels and China-specific defaults. They are not fully localized. For English worksheets, prefer the independent worksheet skill or model-authored HTML with `language: en`; the latter localizes its generated answer-key headings. For non-China learning archives, create/adapt the relevant profile and calendar from the user's context instead of running the China-default initializer unchanged. Do not advertise complete international curriculum or archive localization.\n\n## Skill Boundary\n\n`zhizhi-math-coach` owns grading, explanations, full-paper archives, knowledge assessment and configured background/sync work. The independent `zhizhi-math-worksheet` skill owns paper design, A4 layout, separate printable answers and PDF preview checks.\n\nFor a request that only asks for a paper, use the installed `zhizhi-math-worksheet` instructions when available, before the learning-record loop below. Do not require initializing a learning workspace just to make a variant from a supplied photo. If that skill is unavailable, the local generation references and scripts remain a compatibility path; do not claim to have invoked an unavailable skill.\n\nFor grading followed by practice, complete the requested diagnosis, select relevant questions, then pass a question list with complete stems, options and necessary diagram descriptions. Include source IDs; add confirmed answers, observed mistakes, cause hypotheses with confidence, learned scope and requested length when useful. Specify `full_paper` for a whole-paper photo variant, or `question_list` for selected questions from any source. Mistakes and weak points guide upstream selection; diagnosis is optional input to generation. The worksheet skill returns local artifacts and "},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7cxpw3e2e3tg37c248mvktxh86y35a\",\n  \"slug\": \"zhizhi-math-coach\",\n  \"version\": \"0.3.1\",\n  \"publishedAt\": 1790845175622\n}"},{"path":"references/automation-openclaw.md","content":"# OpenClaw Automation\n\n## Boundary\n\nScheduled tasks should default to reminders and suggestions. They should not automatically change weak-point status, memory, records, or generate new worksheets unless the parent has explicitly requested that behavior.\n\nOpenClaw cron jobs are not declared by a skill manifest at install time. Use the bundled setup script after the parent explicitly enables scheduled reminders. The script detects whether `openclaw cron` is available; if not, it prints the exact commands instead of failing the learning workflow.\n\n```bash\npython3 {baseDir}/scripts/setup_scheduled_tasks.py \\\n  --workspace <personal-learning-workspace> \\\n  --enable-config \\\n  --auto-register \\\n  --timezone Asia/Shanghai\n```\n\nThe setup writes `.zhizhi-math-coach/config.json`:\n\n- `automation.enabled`: scheduled reminders are allowed.\n- `automation.auto_register_when_supported`: register via `openclaw cron` when the CLI exists.\n- `automation.timezone`: IANA timezone used by `openclaw cron --tz`; use the parent's local timezone, for example `Asia/Shanghai`.\n- `automation.allow_record_writes`: default `false`.\n- `automation.allow_auto_worksheet_generation`: default `false`.\n\n## Recommended Schedule\n\n- Opt-in photo archival: every 5 minutes, claim at most one queued photo batch in an isolated multimodal session; see `photo-intake.md`.\n- Daily 20:30 local time: due review reminders, pending upload reminders, and stale short-term observations.\n- Sunday 20:00 local time: weekly progress review and next-week suggestions.\n- End of semester: generate a summary and holiday review pool.\n- Winter/summer break: weekly holiday review suggestions.\n\n## Suggested Task Outputs\n\n- due weak points;\n- pending worksheets not yet graded;\n- short explanation cards that may help parents;\n- suggested next worksheet strategy;\n- warnings about low-confidence or missing evidence.\n\n## Channels\n\nThe learning logic should not depend on a channel. Start with local records and OpenClaw conversation output.\n\nFor push delivery, use a channel adapter. Feishu/Lark is the default v1 recommendation when available because it supports chat, files, and operational workflows. DingTalk can be added later through a channel/plugin adapter if the environment supports it.\n\n## Safety\n\n- Do not send sensitive student files to public channels.\n- Do not push full answer keys into a child-facing chat.\n- Do not infer new mastery status from time alone.\n- Do not schedule automatic worksheet generation by default.\n- Do not auto-create cron jobs merely because the skill was installed; require an explicit setup trigger or existing automation config.\n\n## Photo Archive Worker\n\n```bash\npython3 {baseDir}/scripts/setup_scheduled_tasks.py \\\n  --workspace <personal-learning-workspace> \\\n  --enable-config --photo-worker --auto-register --timezone Asia/Shanghai\n```\n\n`--photo-worker` sets `automation.allow_photo_archive: true` and adds a `*/5 * * * *` isolated worker. Its write authorization applies only to explicitly qu"},{"path":"references/complex-problem-generation.md","content":"# Complex Problem Generation\n\n## Purpose\n\nUse this reference for multi-step word problems, condition filtering, compare-after-intermediate problems, and exam review items.\n\n## Generation Rule\n\nAI may design the item, but the worksheet spec must preserve the structure:\n\n- problem type;\n- known quantities;\n- unknown quantity;\n- required conditions;\n- distractor or unused conditions;\n- intermediate quantity;\n- final operation;\n- answer sentence;\n- `answer_detail` with the full solving path.\n\n## Review Status\n\nUse one of:\n\n- `draft`: not ready to print.\n- `model_reviewed`: reviewed by another model or a second pass.\n- `human_review_needed`: print only after parent/teacher confirmation.\n- `approved`: ready to print.\n\nComplex items should not be printed when `review_status` is `draft` or missing.\n\n## Difficulty Control\n\nIf the target is reading or modeling, keep arithmetic easy enough not to hide the diagnosis.\n\nChange one or two dimensions at a time:\n\n- scenario;\n- final question wording;\n- condition order;\n- distractor condition;\n- intermediate quantity;\n- calculation load.\n\n## Answer Key\n\nFor multi-step items, `answer_detail` must show:\n\n- each intermediate value;\n- why a condition is used or ignored;\n- the final equation or comparison;\n- the final answer sentence and unit."},{"path":"references/curriculum-alignment.md","content":"# Curriculum Alignment\n\n## Purpose\n\nUse curriculum files to keep grading, explanations, and worksheets aligned with the student's real school scope.\n\nThis project may reference external textbook indexes or local PDF paths in a personal learning workspace, but the public skill must not include textbook PDFs, screenshots, scans, OCR dumps, or copied problem sets.\n\n## Workspace Files\n\n- `curriculum/profile.md`: student grade, textbook edition, textbook volume, source references, and current unit.\n- `curriculum/scope.md`: unit and knowledge-point map.\n- `curriculum/progress.md`: learned/not-yet-learned topics, school progress, and exam scope.\n- `curriculum/school-calendar.md`: school-year, semester, exam, and holiday windows.\n\n## China Textbook Example\n\nFor a first-grade student using 人教版 mathematics, the personal profile can cite:\n\n```text\nTextbook source: https://github.com/TapXWorld/ChinaTextbook/tree/master/小学/数学/人教版\nTextbook volume: 一年级下册\n```\n\nUse that source to identify grade/volume and broad unit scope. Do not copy full textbook pages or exercises into the public repository.\n\n## Scope Rules\n\n- Daily practice should stay within learned content unless the parent explicitly asks for preview.\n- Midterm review should cover this semester's learned units and actual mistakes.\n- Final review should cover the whole semester, weighted by weak points and relapse history.\n- Winter break should repair first-semester weak points before previewing next semester.\n- Summer break should review the whole school year before previewing the next grade.\n\n## Output Rules\n\nWhen using curriculum context, state:\n\n- grade and semester;\n- textbook edition and volume;\n- current unit or scope;\n- whether the item is current review, remedial, transfer check, exam review, or preview.\n\nGenerate original diagnostic and practice items. Use textbook terms and scope, not copied textbook text."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Grade math papers, explain mistakes, and track learning Skill: Zhizhi Math Coach Owner: linzi007 Summary: Grade math papers, explain mistakes, and track learning Tags: china:0.3.1, education:0.3.1, latest:0.3.1, math:0.3.1, parenting:0.3.1, worksheet:0.3.1 Version history: v0.3.1 | 2026-10-01T08:59:35.622Z | user Clarify integration with @linzi007/zhizhi-math-worksheet: same-agent handoff of selected questions, scope and language preferences; return PDFs, source mappings","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1798,"uniquenessScore":47,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T08:08:37.510Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T08:08:37.510Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T10:45:10.915Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"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!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"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","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}