wps-exam-paper

wps-exam-paper is a skill for Claude Code from Bwkyd/wps-skills. It costs 76 tokens per session (2,164 once invoked), scanned A, original, MIT.

An exam-paper formatter for creating standard test sheets with features such as a tear-off sealing line, score table, question numbering, and answer space.

In plain words
What is it for?
Use it for exams, quizzes, practice papers, and tests containing multiple-choice, fill-in-the-blank, true-or-false, short-answer, calculation, or essay questions.
Why use it?
It removes the manual page-layout work involved in turning questions into a printable exam. It keeps common question types and scoring areas organized.

Skill for Claude Code

Written for Claude Code: allowed-tools in frontmatter.

Good fit Use it for exams, quizzes, practice papers, and tests containing multiple-choice, fill-in-the-blank, true-or-false, short-answer, calculation, or essay questions.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/bwkyd/wps-skills/wps-exam-paper
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add Bwkyd/wps-skills --skill wps-exam-paper
Clone the repo
git clone --depth 1 https://github.com/Bwkyd/wps-skills

Made for: Claude Code.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for wps-exam-paper

README.md
[![agentmods](https://agentmods.dev/badge/skills/bwkyd/wps-skills/wps-exam-paper/github.svg)](https://agentmods.dev/skills/bwkyd/wps-skills/wps-exam-paper)
Your own site
<a href="https://agentmods.dev/skills/bwkyd/wps-skills/wps-exam-paper"><img src="https://agentmods.dev/badge/skills/bwkyd/wps-skills/wps-exam-paper/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for wps-exam-paper

Your own site · 80×15
<a href="https://agentmods.dev/skills/bwkyd/wps-skills/wps-exam-paper"><img src="https://agentmods.dev/badge/skills/bwkyd/wps-skills/wps-exam-paper.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 76 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,164 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00076 $0.02164
Opus 5 $0.00038 $0.01082
Sonnet 5 $0.00015 $0.00433
Haiku 4.5 $0.00008 $0.00216

Measured 12d ago against content hash bbebb4186fa0, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-11, from the pricing page.

Security

Grade A, and why

wps-exam-paper scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 12d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/wps-exam-paper/SKILL.md · 223 lines

How it starts

The opening of the file, as written. The whole thing — 223 lines — stays where its author put it; the contents beside it link to each section on GitHub.

试卷生成器

题目 → 规范排版 → 带密封线和评分栏的标准试卷。

老师出题最头疼的不是题目本身,而是排版。

When to Use

  • 制作期中/期末考试试卷
  • 练习卷/测验卷
  • 需要规范的试卷格式(密封线、评分表)
  • 用户说"帮我做份试卷""出几道题"

When NOT to Use

  • 课件制作 → 使用 wps-courseware
  • 普通文档 → 使用 wps-docx-writer

试卷格式标准

┌──────────────────────────────────────────────┐
│ ┃ 姓   ┃                                    │
│ ┃ 名   ┃  XX学校 2025-2026学年第二学期       │
│ ┃ :   ┃     【XX学科】期末考试试卷          │
│ ┃      ┃                                    │
│ ┃ 班   ┃  考试时间:120分钟  满分:100分     │
│ ┃ 级   ┃                                    │
│ ┃ :   ┃  ┌────┬────┬────┬────┬────┬────┐  │
│ ┃      ┃  │题号│ 一 │ 二 │ 三 │ 四 │总分│  │
│ ┃ 学   ┃  ├────┼────┼────┼────┼────┼────┤  │
│ ┃ 号   ┃  │得分│    │    │    │    │    │  │
│ ┃ :   ┃  └────┴────┴────┴────┴────┴────┘  │
│ ┃      ┃                                    │
│密封线  ┃  一、选择题(每小题3分,共30分)     │
│ ┃      ┃  1. 题目内容                        │
│ ┃      ┃     A. 选项A  B. 选项B              │
│ ┃      ┃     C. 选项C  D. 选项D              │
│ ┃      ┃                                    │
└──────────────────────────────────────────────┘

支持的题型

[1] 选择题 → A/B/C/D 四选一,可设单选/多选
[2] 填空题 → 下划线留空
[3] 判断题 → 对(√) 错(×)
[4] 简答题 → 留答题空间
[5] 计算题 → 留解题步骤空间
[6] 作文/论述 → 留方格纸区域
[7] 连线题 → 左右匹配
[8] 材料分析 → 阅读材料+问题

工作流程

Step 1: 确认试卷信息

  • 学校名称
  • 学科/年级
  • 考试类型(期中/期末/月考/模拟)
  • 时间和分值
  • 题型和题量

Step 2: 生成试卷

from docx import Document
from docx.shared import Pt, Cm, Mm, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.table import WD_TABLE_ALIGNMENT
from docx.oxml.ns import qn
import os

def create_exam_paper(info, sections, output_path=None):
    """
    info = {
        'school': 'XX中学',
        'semester': '2025-2026学年第二学期',
        'subject': '数学',
        'exam_type': '期末考试',
        'duration': 120,
        'total_score': 100,
    }
    sections = [
        {'type': '选择题', 'score_each': 3, 'total': 30, 'questions': [...]},
        {'type': '填空题', 'score_each': 3, 'total': 15, 'questions': [...]},
    ]
    """
    doc = Document()
    section = doc.sections[0]
    section.page_width = Mm(210)
    section.page_height = Mm(297)
    section.top_margin = Mm(25)
    section.bottom_margin = Mm(20)
    section.left_margin = Mm(30)  # 留密封线空间
    section.right_margin = Mm(20)

    def set_font(run, name='宋体', size=12, bold=False):
        run.font.size = Pt(size)
        run.font.name = name
        run._element.rPr.rFonts.set(qn('w:eastAsia'), name)
        run.bold = bold

    # 标题
    p = doc.add_paragraph()
    p.alignment = WD_ALIGN_PARAGRAPH.CENTER
    run = p.add_run(info['school'])
    set_font(run, '黑体', 10)

    p = doc.add_paragraph()
    p.alignment = WD_ALIGN_PARAGRAPH.CENTER
    run = p.add_run(f"{info['semester']}")
    set_font(run, '宋体', 10)

    p = doc.add_paragraph()
    p.alignment = WD_ALIGN_PARAGRAPH.CENTER
    run = p.add_run(f"【{info['subject']}】{info['exam_type']}试卷")
    set_font(run, '黑体', 16, True)

    p = doc.add_paragraph()
    p.alignment = WD_ALIGN_PARAGRAPH.CENTER
    run = p.add_run(
        f"考试时间:{info['duration']}分钟    满分:{info['total_score']}分")
    set_font(run, '宋体', 10)

    # 评分表
    num_sections = len(sections)
    table = doc.add_table(rows=2, cols=num_sections + 2)
    table.alignment = WD_TABLE_ALIGNMENT.CENTER
    headers = ['题号'] + [f'{"一二三四五六七八九十"[i]}' for i in range(num_sections)] + ['总分']
    for i, h in enumerate(headers):
        table.cell(0, i).text = h
        table.cell(0, i).paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER
    table.cell(1, 0).text = '得分'
    table.cell(1, 0).paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER

    doc.add_paragraph()  # 空行

    # 题目区域
    section_labels = "一二三四五六七八九十"
    q_num = 1
    for idx, sec in enumerate(sections):
        # 大题标题
        p = doc.add_paragraph()
        label = section_labels[idx]
        run = p.add_run(
            f"{label}、{sec['type']}(每小题{sec['score_each']}分,"
            f"共{sec['total']}分)")
        set_font(run, '黑体', 12, True)

        # 题目
        for q in sec.get('questions', []):
            p = doc.add_paragraph()
            run = p.add_run(f"{q_num}. {q.get('stem', '(题目内容)')}")
            set_font(run, '宋体', 11)
            p.paragraph_format.line_spacing = Pt(24)

            if sec['type'] == '选择题' and 'options' in q:
                p = doc.add_paragraph()
                opts = q['options']
                run = p.add_run(
                    f"    A. {opts[0]}    B. {opts[1]}    "
                    f"C. {opts[2]}    D. {opts[3]}")
                set_font(run, '宋体', 11)

            if sec['type'] in ['简答题', '计算题', '论述题']:
                for _ in range(4):
                    doc.add_paragraph()  # 答题空间

            q_num += 1

    if not output_path:
        output_path = f"{info['subject']}{info['exam_type']}试卷.docx"
    doc.save(output_path)
    return os.path.abspath(output_path)

Read the full file on GitHub · 223 lines

Files

What ships with it

1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 12d ago First seen · 223 lines · 76 tokens per session scan A bbebb4186fa0

Subscribe to this mod's changes

wps-exam-paper is a skill published in the GitHub repository Bwkyd/wps-skills (7 stars, last pushed 4mo ago), licensed MIT. It adds 76 tokens to every session and 2,164 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

note-organizer

Use this skill whenever the user wants to organize course materials, lecture notes, PPT/PDF/DOCX files, textbooks, personal notes, senior-student notes, historical exams, review questions, standards, manuals, or scattered study resources into a structured Markdown note library. Use it even when the user only says…

Renakoni/note-organizer · 228 tokens

read-book

When you want to read and extract structured notes from a book — PDF, EPUB, MOBI, markdown, .txt, pasted text, or URL to a public-domain work. Reads in chunks (by chapter when a TOC exists, by 50-page blocks otherwise), extracts per-chapter TL;DR + key concepts + quotes + action items + frameworks, and offers to…

coreyhaines31/makerskills · 192 tokens

thesis-defense-pptx

Create, polish, and quality-check editable undergraduate or graduate thesis defense PowerPoint decks from a local thesis PDF/LaTeX project and an existing PPTX template. Use when the user asks for a formal defense PPT, thesis presentation, academic答辩PPT, template-matched PPTX, or local PowerPoint deck generation with…

zouchenzhen/thesis-defense-pptx-skill · 77 tokens

ai-learning-coach

An AI study coach that guides someone through setting a learning goal, understanding material, recalling it, practising, correcting mistakes, reviewing later, and completing a project. It is for learning a subject rather than simply receiving an answer.

sanhuang520-ship-it/awesome-chinese-ai-tools · 87 tokens

book-digest-cn

A Chinese book-summary and reading-notes guide. It focuses on the question a book answers, the author's claims and evidence, and how the ideas can be applied, rather than simply repeating the table of contents.

sanhuang520-ship-it/awesome-chinese-ai-tools · 75 tokens

homework-tutor-cn

A Chinese-language homework coaching guide for parents of primary and secondary school students.

sanhuang520-ship-it/awesome-chinese-ai-tools · 65 tokens