wps-cn-calendar

wps-cn-calendar is a skill for Claude Code from Bwkyd/wps-skills. It costs 107 tokens per session (2,370 once invoked), scanned A, original, MIT.

A Chinese calendar and staff scheduling tool that creates monthly or yearly calendars with lunar dates, public holidays and adjusted workdays. It also makes two-shift, three-shift and holiday duty rosters.

In plain words
What is it for?
Use it to create calendars, employee schedules and weekend or holiday duty tables for teams working in shifts.
Why use it?
It removes the need to build holiday calendars and shift plans by hand. Colour coding helps distinguish shifts and duty assignments.

Skill for Claude Code

Written for Claude Code: allowed-tools in frontmatter.

Good fit Use it to create calendars, employee schedules and weekend or holiday duty tables for teams working in shifts.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/bwkyd/wps-skills/wps-cn-calendar
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-cn-calendar
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-cn-calendar

README.md
[![agentmods](https://agentmods.dev/badge/skills/bwkyd/wps-skills/wps-cn-calendar/github.svg)](https://agentmods.dev/skills/bwkyd/wps-skills/wps-cn-calendar)
Your own site
<a href="https://agentmods.dev/skills/bwkyd/wps-skills/wps-cn-calendar"><img src="https://agentmods.dev/badge/skills/bwkyd/wps-skills/wps-cn-calendar/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-cn-calendar

Your own site · 80×15
<a href="https://agentmods.dev/skills/bwkyd/wps-skills/wps-cn-calendar"><img src="https://agentmods.dev/badge/skills/bwkyd/wps-skills/wps-cn-calendar.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 107 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,370 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.00107 $0.02370
Opus 5 $0.00053 $0.01185
Sonnet 5 $0.00021 $0.00474
Haiku 4.5 $0.00011 $0.00237

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

Security

Grade A, and why

wps-cn-calendar 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-cn-calendar/SKILL.md · 225 lines

How it starts

The opening of the file, as written. The whole thing — 225 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-attendance
  • 项目排期 → 使用 wps-gantt

功能模块

[1] 月度日历 → 含农历、节假日标注
[2] 年度日历 → 12个月一览表
[3] 排班表 → 三班倒/两班倒/弹性
[4] 值班表 → 节假日/周末值班安排

工作流程

Step 1: 确认需求

  • 类型:日历/排班/值班
  • 时间范围:哪年哪月
  • 排班模式(如需要):几班倒、人员名单
  • 特殊安排(如需要):谁请假、谁优先

Step 2: 生成日历/排班表

from openpyxl import Workbook
from openpyxl.styles import Font, Alignment, PatternFill, Border, Side
from datetime import datetime, timedelta
import calendar
import os

# 2026年法定节假日(示例,需要每年更新)
HOLIDAYS_2026 = {
    '2026-01-01': '元旦',
    '2026-01-29': '除夕', '2026-01-30': '春节', '2026-01-31': '春节',
    '2026-02-01': '春节', '2026-02-02': '春节', '2026-02-03': '春节',
    '2026-02-04': '春节',
    '2026-04-05': '清明', '2026-04-06': '清明', '2026-04-07': '清明',
    '2026-05-01': '劳动节', '2026-05-02': '劳动节', '2026-05-03': '劳动节',
    '2026-05-04': '劳动节', '2026-05-05': '劳动节',
    '2026-05-31': '端午', '2026-06-01': '端午', '2026-06-02': '端午',
    '2026-10-01': '国庆', '2026-10-02': '国庆', '2026-10-03': '国庆',
    '2026-10-04': '国庆', '2026-10-05': '国庆', '2026-10-06': '国庆',
    '2026-10-07': '国庆',
}
# 调休上班日
WORKDAYS_2026 = {'2026-01-25', '2026-02-08', '2026-10-10'}


def create_monthly_calendar(year, month, output_path=None):
    """生成月度日历"""
    wb = Workbook()
    ws = wb.active
    ws.title = f"{year}年{month}月"

    # 样式
    header_fill = PatternFill('solid', fgColor='2C3E50')
    weekend_fill = PatternFill('solid', fgColor='FADBD8')
    holiday_fill = PatternFill('solid', fgColor='F5B7B1')
    today_fill = PatternFill('solid', fgColor='AED6F1')
    header_font = Font(name='微软雅黑', size=12, bold=True, color='FFFFFF')

    # 标题
    ws.merge_cells('A1:G1')
    ws['A1'] = f'{year}年{month}月'
    ws['A1'].font = Font(name='微软雅黑', size=18, bold=True)
    ws['A1'].alignment = Alignment(horizontal='center')

    # 星期头
    weekdays = ['一', '二', '三', '四', '五', '六', '日']
    for col, wd in enumerate(weekdays, 1):
        cell = ws.cell(row=2, column=col, value=f'星期{wd}')
        cell.font = header_font
        cell.fill = header_fill
        cell.alignment = Alignment(horizontal='center')
        ws.column_dimensions[chr(64+col)].width = 14

    # 日期
    cal = calendar.Calendar(firstweekday=0)
    row = 3
    for week in cal.monthdatescalendar(year, month):
        for col, date in enumerate(week, 1):
            if date.month != month:
                continue
            date_str = date.strftime('%Y-%m-%d')
            cell = ws.cell(row=row, column=col)
            cell.value = date.day
            cell.font = Font(name='微软雅黑', size=14)
            cell.alignment = Alignment(horizontal='center', vertical='center')
            ws.row_dimensions[row].height = 50

            # 节假日标注
            if date_str in HOLIDAYS_2026:
                cell.fill = holiday_fill
                note_cell = ws.cell(row=row, column=col)
                note_cell.value = f"{date.day}\n{HOLIDAYS_2026[date_str]}"
                note_cell.font = Font(name='微软雅黑', size=10)
                note_cell.alignment = Alignment(horizontal='center',
                                                 vertical='center',
                                                 wrap_text=True)
            elif date.weekday() >= 5 and date_str not in WORKDAYS_2026:
                cell.fill = weekend_fill

        row += 1

    if not output_path:
        output_path = f'{year}年{month}月日历.xlsx'
    wb.save(output_path)
    return os.path.abspath(output_path)


def create_shift_schedule(year, month, staff_list, shift_pattern='三班倒',
                          output_path=None):
    """生成排班表"""
    wb = Workbook()
    ws = wb.active
    ws.title = f"{month}月排班"

    shifts = {
        '三班倒': ['早', '中', '晚', '休'],
        '两班倒': ['白', '夜', '休', '休'],
        '做五休二': ['班', '班', '班', '班', '班', '休', '休'],
    }
    pattern = shifts.get(shift_pattern, shifts['三班倒'])

    # 表头
    header_fill = PatternFill('solid', fgColor='2C3E50')
    header_font = Font(name='微软雅黑', size=9, bold=True, color='FFFFFF')
    shift_colors = {
        '早': PatternFill('solid', fgColor='AED6F1'),
        '白': PatternFill('solid', fgColor='AED6F1'),
        '班': PatternFill('solid', fgColor='AED6F1'),
        '中': PatternFill('solid', fgColor='F9E79F'),
        '晚': PatternFill('solid', fgColor='D7BDE2'),
        '夜': PatternFill('solid', fgColor='D7BDE2'),
        '休': PatternFill('solid', fgColor='ABEBC6'),
    }

    days_in_month = calendar.monthrange(year, month)[1]
    ws.cell(row=1, column=1, value='姓名').font = header_font
    ws.cell(row=1, column=1).fill = header_fill

    for d in range(1, days_in_month + 1):
        date = datetime(year, month, d)
        cell = ws.cell(row=1, column=d+1, value=f'{d}\n{["一","二","三","四","五","六","日"][date.weekday()]}')
        cell.font = Font(name='微软雅黑', size=8, color='FFFFFF')
        cell.fill = header_fill
        cell.alignment = Alignment(horizontal='center', wrap_text=True)
        ws.column_dimensions[chr(65+d) if d < 26 else 'A'].width = 4

    # 排班
    for i, name in enumerate(staff_list):
        ws.cell(row=i+2, column=1, value=name).font = Font(name='微软雅黑', size=10)
        for d in range(1, days_in_month + 1):
            shift_idx = (d - 1 + i) % len(pattern)
            shift = pattern[shift_idx]
            cell = ws.cell(row=i+2, column=d+1, value=shift)
            cell.alignment = Alignment(horizontal='center')
            cell.font = Font(name='微软雅黑', size=9)
            if shift in shift_colors:
                cell.fill = shift_colors[shift]

    if not output_path:
        output_path = f'{year}年{month}月排班表.xlsx'
    wb.save(output_path)
    return os.path.abspath(output_path)

Read the full file on GitHub · 225 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 · 225 lines · 107 tokens per session scan A 119cbfa16eff

Subscribe to this mod's changes

wps-cn-calendar is a skill published in the GitHub repository Bwkyd/wps-skills (8 stars, last pushed 4mo ago), licensed MIT. It adds 107 tokens to every session and 2,370 once invoked, about $0.0005 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

acceptance-orchestrator

Use when a coding task should be driven end-to-end from issue intake through implementation, review, deployment, and acceptance verification with minimal human re-intervention.

lingxling/awesome-skills-cn · 37 tokens

stakeholder-communication

Communicate effectively with stakeholders across functions and seniority levels. Use this skill when writing status updates, preparing executive reviews, sharing technical decisions with non-technical audiences, managing up, communicating bad news, or designing the communication cadence for a project. Triggers on…

rampstackco/claude-skills · 103 tokens

syndic

Gère un parc de copropriétés en France avec vue portfolio consolidée. Couvre administration, comptabilité (décret 2005, plan comptable copro, 5 annexes), assemblées générales (convocation, PV, notification), appels de fonds, travaux, fournisseurs, recouvrement d'impayés et transition de syndic. Maîtrise les majorités…

romainsimon/paperasse · 194 tokens

contact-cache

Track all identified/contacted people across strategies. CSV-backed contact database with dedup by LinkedIn URL or email. Prevents duplicate outreach when running strategies on a recurring cadence.

gooseworks-ai/goose-skills · 38 tokens

atlassian

Manage Jira issues and Confluence wiki pages in Atlassian Cloud. Use when: (1) searching/creating/updating Jira issues with JQL, (2) searching/reading/creating Confluence pages with CQL, (3) managing Jira workflows, transitions, and comments, (4) browsing Confluence spaces and page hierarchies. Supports OAuth 2.1 via…

sanjay3290/ai-skills · 96 tokens

beta-program-management

Running closed and open betas that produce real signal. Beta participant selection, structured feedback collection, beta-to-GA decision criteria, and the difference between soft-launch (no structure, no signal), kitchen-sink (everyone in, no actionable feedback), and structured beta (calibrated cohort, intentional…

rampstackco/claude-skills · 155 tokens