wps-budget — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited wps-budget (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
选类型 → 填数据 → 自动公式 → 预算表搞定。
wps-salarywps-financial-report[1] 部门年度预算 → 人力/办公/差旅/培训等分项
[2] 项目预算 → 人工/材料/设备/外包/管理费
[3] 活动预算 → 场地/餐饮/物料/交通/宣传
[4] 家庭预算 → 收入/固定支出/可变支出/储蓄
[5] 营销预算 → 线上/线下/品牌/效果/公关from openpyxl import Workbook
from openpyxl.styles import Font, Alignment, PatternFill, Border, Side, numbers
from openpyxl.utils import get_column_letter
import os
def create_budget(budget_type, items, output_path=None):
"""生成预算表"""
wb = Workbook()
ws = wb.active
ws.title = "预算表"
# 样式
header_fill = PatternFill('solid', fgColor='2C3E50')
header_font = Font(name='微软雅黑', size=11, bold=True, color='FFFFFF')
cat_fill = PatternFill('solid', fgColor='ECF0F1')
cat_font = Font(name='微软雅黑', size=11, bold=True)
body_font = Font(name='微软雅黑', size=10)
money_fmt = '#,##0.00'
pct_fmt = '0.0%'
thin = Side(style='thin')
border = Border(left=thin, right=thin, top=thin, bottom=thin)
# 标题
ws.merge_cells('A1:G1')
ws['A1'] = f"{'部门' if budget_type=='dept' else '项目'}预算表"
ws['A1'].font = Font(name='微软雅黑', size=16, bold=True)
ws['A1'].alignment = Alignment(horizontal='center')
# 表头
headers = ['序号', '费用类别', '费用项目', '预算金额',
'实际金额', '差异', '执行率']
for col, h in enumerate(headers, 1):
cell = ws.cell(row=3, column=col, value=h)
cell.font = header_font
cell.fill = header_fill
cell.alignment = Alignment(horizontal='center')
cell.border = border
# 列宽
widths = [6, 14, 20, 14, 14, 14, 10]
for i, w in enumerate(widths, 1):
ws.column_dimensions[get_column_letter(i)].width = w
# 填入数据
row = 4
seq = 1
for category, sub_items in items.items():
# 分类行
ws.merge_cells(start_row=row, start_column=2,
end_row=row, end_column=3)
ws.cell(row=row, column=1, value='').border = border
cat_cell = ws.cell(row=row, column=2, value=category)
cat_cell.font = cat_font
cat_cell.fill = cat_fill
cat_cell.border = border
# 分类小计公式
start = row + 1
end = row + len(sub_items)
for c in [4, 5]:
cell = ws.cell(row=row, column=c)
cell.value = f'=SUM({get_column_letter(c)}{start}:{get_column_letter(c)}{end})'
cell.number_format = money_fmt
cell.font = cat_font
cell.fill = cat_fill
cell.border = border
# 差异和执行率
ws.cell(row=row, column=6,
value=f'=D{row}-E{row}').number_format = money_fmt
ws.cell(row=row, column=6).fill = cat_fill
ws.cell(row=row, column=6).border = border
ws.cell(row=row, column=7,
value=f'=IF(D{row}=0,"",E{row}/D{row})').number_format = pct_fmt
ws.cell(row=row, column=7).fill = cat_fill
ws.cell(row=row, column=7).border = border
row += 1
for item_name, amount in sub_items.items():
ws.cell(row=row, column=1, value=seq).border = border
ws.cell(row=row, column=1).font = body_font
ws.cell(row=row, column=3, value=item_name).border = border
ws.cell(row=row, column=3).font = body_font
ws.cell(row=row, column=4, value=amount).border = border
ws.cell(row=row, column=4).number_format = money_fmt
ws.cell(row=row, column=5, value=0).border = border
ws.cell(row=row, column=5).number_format = money_fmt
ws.cell(row=row, column=6,
value=f'=D{row}-E{row}').number_format = money_fmt
ws.cell(row=row, column=6).border = border
ws.cell(row=row, column=7,
value=f'=IF(D{row}=0,"",E{row}/D{row})').number_format = pct_fmt
ws.cell(row=row, column=7).border = border
seq += 1
row += 1
# 合计行
ws.merge_cells(start_row=row, start_column=1,
end_row=row, end_column=3)
total_cell = ws.cell(row=row, column=1, value='合计')
total_cell.font = Font(name='微软雅黑', size=12, bold=True)
total_cell.alignment = Alignment(horizontal='center')
total_cell.fill = PatternFill('solid', fgColor='3498DB')
total_cell.font = Font(name='微软雅黑', size=12, bold=True, color='FFFFFF')
for c in [4, 5, 6]:
cell = ws.cell(row=row, column=c)
cell.value = f'=SUMPRODUCT(({get_column_letter(c)}4:{get_column_letter(c)}{row-1})*(A4:A{row-1}<>""))'
cell.number_format = money_fmt
cell.font = Font(name='微软雅黑', bold=True, color='FFFFFF')
cell.fill = PatternFill('solid', fgColor='3498DB')
cell.border = border
if not output_path:
output_path = '预算表.xlsx'
wb.save(output_path)
return os.path.abspath(output_path)部门年度预算常见项:
├─ 人力成本:工资、社保、奖金、培训
├─ 办公费用:房租、水电、物业、办公用品
├─ 差旅费用:交通、住宿、餐饮补贴
├─ 营销费用:广告、活动、礼品
├─ IT费用:软件、硬件、云服务
└─ 其他:招待费、杂费、预备金(5%)# 部门预算
/wps-budget 帮我做技术部2026年年度预算表
# 项目预算
/wps-budget 新产品开发项目预算,包含人工、设备、测试费用
# 活动预算
/wps-budget 公司年会预算表,200人规模~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.