Token导航 LogoToken导航

Agent Skill · 开发

bid-leveling(投标均衡)

bid-leveling 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要围绕仓库状态、代码变更或协作事项进行整理时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

bid-leveling 是开发类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为只读;许可证信息还不明确,第三方扫描有提醒项,按安装量在开发类的 21,746 个 Skill 里排第 11,589。

总安装 1,680周安装 70GitHub Stars 2下载 560核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
unknown

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:bid-leveling(投标均衡)
来源仓库:https://github.com/build-plus/skills
仓库路径:skills/bid-leveling
安装命令:
npx skills add https://github.com/build-plus/skills --skill bid-leveling
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/build-plus/skills --skill bid-leveling

这个 Skill 是做什么的

开发类 Skill 面向写代码、改代码和排查问题,一般会读写仓库文件,部分还会执行构建或测试命令。

对比建设工程投标方案,按 UniFormat II 分类生成均衡报表。适用于工程量清单报价分析和多方案比选场景。输出详细对比表格和 PDF 分析报告,支持单份或多份投标处理。需准备标准化的工程量清单文件作为输入基础。bid-leveling 属于开发类 Skill,可作为该场景下的辅助能力补充。

来源仓库内路径:skills/bid-leveling

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/build-plus/skills --skill bid-leveling;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它标注为只读,先用只读任务试一次,确认行为符合预期再扩大使用范围。

常见问题

6 条

bid-leveling 怎么安装?

在终端执行 npx skills add https://github.com/build-plus/skills --skill bid-leveling。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

bid-leveling 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

bid-leveling 需要什么权限?

权限级别是只读。该 Skill 主要提供规则、说明或参考内容,本身偏只读;真正读写文件、联网或执行命令仍取决于宿主 Agent 的任务。

bid-leveling 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

bid-leveling 用的人多吗?

公开数据是累计安装 1,680 次,近一周安装 70 次,下载 560 次,GitHub 2 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

bid-leveling 安全吗?

第三方扫描有提醒项,说明存在需要人工确认的行为。安装前请打开源码看清它读了什么、联网到哪里。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 标注为只读权限,试用阶段不容易误改本地文件。

先想清楚的地方

  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 第三方扫描存在提醒项或未通过项,需要人工逐条确认。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理开发类任务、又不想每次都手写提示词的人。
  • 只想先试试效果、不希望它改动本地文件的人。

不太适合

  • 需要明确授权才能用到公司项目里的场景。
  • 需要厂商级技术支持和 SLA 的生产系统。

开发类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
skill-vetter

技能审查员 · OpenClaw

8,779,018986操作浏览器MIT-0通过
ontology

本体论 · OpenClaw

6,636,960576只读MIT-0通过
entra-app-registration

内部应用程序注册 · Codex、Claude

6,631,872764接触敏感数据未明确通过
entra-app-registration

内部应用程序注册 · Codex、Claude

3,757,680201接触敏感数据未明确通过
nano-banana-pro

纳米香蕉专业版 · OpenClaw

3,526,898364接触敏感数据MIT-0有提醒
bid-leveling

投标均衡 · 本页

1,6802只读未明确有提醒

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

Bid Leveling

Compare construction bids by mapping line items to UniFormat II headings, producing a leveling spreadsheet and a concise analytical PDF report.

Single Document vs. Multiple Documents

This skill handles both single-bid analysis and multi-bid comparison. The workflow is the same either way, with these differences when only one document is provided:

  • Skip Step 3 (scope overlap assessment) — there is nothing to compare
  • No recommendation — omit recommendations and overlap_comparison from analysis.json entirely. The PDF will not render a Recommendation section.
  • No scope overlap matrix — omit scope_overlap from analysis.json. The PDF page 1 will show project info and the bid summary table only.
  • The spreadsheet and PDF are still produced — the spreadsheet shows the single bidder's costs broken down by UniFormat, and the PDF details the bid's contractual terms, scope, qualifications, and exclusions.

This is useful when the user wants to analyze a single proposal, extract its structure into UniFormat categories, and document its terms before additional bids come in.

Workflow

  1. Collect project info and output format preference
  2. Read and extract data from each bid document
  3. Assess scope overlap and comparability *(skip for single document)*
  4. Determine unit of comparison
  5. Assign line items to UniFormat codes; decide granularity
  6. Build structured JSON data
  7. Generate spreadsheet (run generate_csv.py)
  8. Generate PDF (run generate_pdf.py)

Step 1: Collect Project Info

Ask the user for:

  • Project name (e.g., "Smith Residence")
  • Brief description (e.g., "Custom home build", "Kitchen remodel", "Plumbing subcontract")
  • Output format: CSV or Excel?

If the user has already provided this information, skip the questions.

Excel Context

If the user is already working in an Excel document (they mention an .xlsx file, reference a spreadsheet, or are in a spreadsheet context), add the leveling data as a new sheet in their existing workbook instead of creating a new file. Pass the existing file as the third argument to generate_csv.py.

Step 2: Read Bid Documents

Read each provided bid document. For each document, extract:

  • Every identifiable cost line item (description + cost)
  • All contractual terms listed in references/bid-analysis-guide.md

Preserve exact wording from source documents when extracting terms.

Handling Different File Formats

PDF (.pdf) Read with the Read tool. For multi-page PDFs, read in page ranges (max 20 pages per request). Bids are often formatted as tables — pay close attention to column alignment when extracting line items. If the PDF contains scanned/image-based content rather than selectable text, treat it as an image (see below).

Image (.png, .jpg, .heic, etc.) Read with the Read tool (multimodal). Extract all visible text, tables, and line items from the image. Images are common for photos of handwritten bids, screenshots of emails, or scanned documents. Take extra care with:

  • Handwritten numbers — confirm ambiguous digits (e.g., 1 vs 7, 5 vs 6) by cross-referencing totals
  • Partial visibility — if parts of the document are cut off, ask the user for the missing portions
  • Low resolution — flag any values you cannot read confidently

Excel (.xlsx, .xls, .csv) Read with the Read tool. Spreadsheet bids often have the clearest structure — look for:

  • A schedule of values or line-item tab with description + cost columns
  • Summary/totals tabs or rows
  • Hidden sheets or columns that may contain additional detail
  • Named ranges or formulas that compute subtotals

If the bid is in an Excel file the user is actively working in, this is also an Excel context — see Step 1 for output handling.

Word (.docx, .doc) Read with the Read tool. Word documents are common for formal proposals and contracts. Cost information may appear as:

  • Inline tables (schedule of values, cost breakdowns)
  • Paragraph text with embedded dollar amounts ("...for a total of $45,000...")
  • Appendices or exhibits attached at the end

For Word docs, also extract contractual language carefully — terms like exclusions, retainage, payment schedules, and insurance requirements are often embedded in the body text rather than in a structured table.

Step 3: Assess Scope Overlap

Before leveling, determine if the bids are comparable:

  • Do they cover the same trade or scope of work?
  • Do they share UniFormat Level 2 categories?
  • Are totals in a reasonable range relative to each other?

If bids have minimal overlap, report this prominently and explain why a direct comparison may be misleading. Still produce outputs with a clear caveat.

Line-Item Detail Mode

When comparing bids with highly similar, itemized scopes (e.g., window schedules, appliance packages, panelized systems, fixture lists), check:

  • Do >60% of line items have per-unit pricing that can be compared directly?
  • Can equivalent items be matched across bids?

If yes, use granularity: "line_items" to break down to actual summarized line item descriptions for an apples-to-apples comparison. Build the detail_rows array (see Step 6) with best-effort matching of equivalent line items across bids. Only use this mode when items are truly comparable at the unit level.

Step 4: Determine Unit of Comparison

Choose the most meaningful unit for per-unit cost comparison. Use the same unit across all line items in the output.

Scope typeUnitRationale
Plumbing, electrical, appliance quotes$/fixtureCount of fixtures is the natural quantity
HVAC quotes$/zoneZones are the natural unit
Insulation, drywall, painting, flooring$/SF (scope area)Area of the specific scope being quoted
Framing material purchases, mixed-unit material quotes$/SF (whole house)No single unit; whole-house SF is the fallback
Whole-building / GC bids spanning many UniFormat categories$/SF (whole house)Broad scope; house SF is appropriate
Window or door schedules$/unitPer-window or per-door
Roofing$/square (100 SF) or $/SFRoofing-specific unit

Rules:

  • Never use $/lump or $/lumpsum — this is not a meaningful comparison unit. There is always a better option.
  • Derive the unit and quantity from the bids themselves when possible
  • Default fallback is always $/SF (total construction square footage) — use this when no scope-specific unit can be determined
  • If the bids quote a specific scope area (e.g., "1,200 SF of tile"), use that area, not whole-house SF
  • The unit must be consistent across all rows in the output

Set unit_of_comparison in bid_data.json:

"unit_of_comparison": {"label": "$/fixture", "quantity": 14}

Step 5: Assign UniFormat Codes and Choose Granularity

Map each line item to a UniFormat Level 3 code using references/uniformat_headings.csv.

Rules:

  • Always assign the most specific Level 3 code (e.g., D2010 not D20) — the script handles roll-up
  • If a line item spans categories, assign to the dominant one or split if amounts are clear
  • General conditions, overhead, profit, bonds, permits = UNCLASSIFIED (do not map)

Choosing Output Granularity

Scope typeGranularityWhen
Single-trade subcontract"level3"Plumbing, electrical, HVAC — fine-grained comparison is valuable
Multi-trade or partial scope"level2"Kitchen remodel, TI — roll up to sub-group level
Whole-building / GC bids"level2"Ground-up build — L2 categories give a clear picture
Highly similar itemized quotes (>60% overlap)"line_items"Window schedules, appliance packages, fixture lists

Step 6: Build Structured JSON

Create two JSON files in the working directory.

bid_data.json (for spreadsheet generation)

{
  "project_name": "Smith Residence",
  "granularity": "level3",
  "unit_of_comparison": {"label": "$/fixture", "quantity": 14},
  "bidders": [
    {
      "name": "ABC Plumbing",
      "line_items": [
        {"description": "Rough-in plumbing fixtures", "uniformat_code": "D2010", "cost": 18500.00}
      ]
    }
  ],
  "detail_rows": []
}
  • granularity: "level1", "level2", "level3", or "line_items"
  • unit_of_comparison: {"label": "$/fixture", "quantity": 14} — the label and divisor for per-unit cost
  • detail_rows: required only when granularity = "line_items":
"detail_rows": [
  {
    "description": "36-inch farmhouse sink",
    "uniformat_code": "D2010",
    "costs": {"ABC Plumbing": 1200.00, "XYZ Plumbing": 1350.00}
  }
]

analysis.json (for PDF generation)

All detail fields are arrays of concise bullet strings, not paragraphs.

{
  "project_name": "Smith Residence",
  "project_description": "Custom home build",
  "scope_description": "Roofing and exterior scope: roof coverings, exterior walls, drainage",
  "unit_of_comparison": {"label": "$/SF", "quantity": 3200},
  "recommendations": [
    {
      "scope": "Roofing (B3010)",
      "recommended_bidder": "Rolvin Carpentry",
      "rationale": "On overlapping scope (roofing only), Rolvin is $35,000 vs Perry $110,250 — 68% less"
    },
    {
      "scope": "Exterior Walls (B2010), Drainage (D2040)",
      "recommended_bidder": "Rolvin Carpentry",
      "rationale": "Only Rolvin covers these scopes; Perry does not quote exterior walls or drainage"
    }
  ],
  "overlap_comparison": {
    "shared_categories": ["B3010 ROOF COVERINGS"],
    "overlap_totals": {"Perry Verrone LLC": 110250.00, "Rolvin Carpentry Inc": 35000.00},
    "notes": "Perry's total ($110,250) appears lower than Rolvin's ($140,000) but Perry only covers roofing. On the shared scope, Rolvin is 68% cheaper."
  },
  "scope_overlap": [
    {"description": "Roof coverings", "uniformat_code": "B3010", "bidders": {"Perry Verrone LLC": true, "Rolvin Carpentry Inc": true}},
    {"description": "Exterior walls", "uniformat_code": "B2010", "bidders": {"Perry Verrone LLC": false, "Rolvin Carpentry Inc": true}},
    {"description": "Rain water drainage", "uniformat_code": "D2040", "bidders": {"Perry Verrone LLC": false, "Rolvin Carpentry Inc": true}}
  ],
  "bidders": [
    {
      "name": "ABC Plumbing",
      "brief_summary": "Comprehensive bid at $34,300 — fixtures, heater, waste, drainage",
      "total_cost": 34300.00,
      "unit_cost": 2450.00,
      "scope_differences": [
        "Includes rain water drainage (D2040) — XYZ excludes",
        "Water heater $4,500 vs XYZ $5,200 for domestic water"
      ],
      "duration_and_schedule": ["6-8 weeks", "Monthly progress billing, Net 30"],
      "preconditions": ["Framing + rough electrical complete", "Slab on grade poured"],
      "substantial_completion": ["All fixtures operational", "Pressure test passed"],
      "lien_waiver_requirements": ["Conditional with each progress payment", "Unconditional at final"],
      "qualifications": ["CA License #987654 (C-36)", "$2M GL, $1M auto"],
      "exclusions_and_terms": ["Excludes permits/inspections", "10% retainage, released at final"]
    }
  ]
}

The schema supports two recommendation styles:

  • Single recommendation: When overlap is high, use a single entry in recommendations
  • Per-scope recommendations: When scopes diverge, make separate recommendations per UniFormat area

The overlap_comparison object shows the apples-to-apples subtotals for shared categories and a note explaining why total comparison is misleading. Use this when grand totals would give a false impression.

Scope Overlap Matrix

The scope_overlap array drives the PDF's page-1 comparison table. Enumerate scopes more granularly than the CSV to show exactly what each bidder includes/excludes. Tag each with a UniFormat code. Make a best effort to interpret which line items across bids are equivalent.

Recommendation Logic

Never compare totals across bids with different scopes. A lower total does not mean a better price if the bidder covers less work.

Step 1: Identify overlapping vs. non-overlapping scope

Using the scope overlap matrix, separate line items into:

  • Overlapping: Both bidders include this scope (apples-to-apples)
  • Unique to Bidder A: Only one bidder covers this
  • Unique to Bidder B: Only the other bidder covers this
Step 2: Compare on overlapping scope only

Compute an overlap-only subtotal for each bidder — the sum of costs for only the UniFormat categories both bidders cover. Compare bidders on this number, not on their grand totals.

Example: If Bidder A quotes roofing at $110,250 and Bidder B quotes roofing at $35,000 + exterior walls at $93,333 + drainage at $11,667, the apples-to-apples comparison for roofing is $110,250 vs. $35,000 — Bidder B is dramatically cheaper on the shared scope, even though their total is higher.

Step 3: Make scope-aware recommendations
  • High overlap (>70% of line items shared): Make a single recommendation based on overlapping cost comparison, thoroughness, and contractual terms
  • Partial overlap: Make separate recommendations per scope area when appropriate (e.g., "For roofing, Bidder B is significantly cheaper; Bidder A does not cover exterior walls or drainage")
  • Minimal overlap (<30% shared): Do not recommend one bidder over the other — state that the scopes are too different to compare directly and describe what each covers
Step 4: Factor in unique scope

When one bidder includes scope the other doesn't, call this out explicitly:

  • What would the owner need to procure separately?
  • Does the additional scope justify a higher total?
Weights (for overlapping scope)
  1. Apples-to-apples price — cost for overlapping categories only
  2. Scope completeness — additional coverage reduces separate procurement
  3. Contractual clarity — clear terms, reasonable conditions, adequate insurance

Step 7: Generate Spreadsheet

CSV:

uv run scripts/generate_csv.py bid_data.json bid_level.csv

New Excel file:

uv run scripts/generate_csv.py bid_data.json bid_level.xlsx

Add sheet to existing Excel file:

uv run scripts/generate_csv.py bid_data.json bid_level.xlsx existing_workbook.xlsx

Output format is detected from file extension. The script reads references/uniformat_headings.csv automatically.

Step 8: Generate PDF

uv run scripts/generate_pdf.py analysis.json bid_level.pdf

The PDF is structured as:

  • Page 1: Project info, recommendation, bid summary table, scope overlap matrix with checkmarks
  • Page 2+: Per-bidder details as concise bulleted lists (scope diffs, schedule, preconditions, completion, lien waivers, qualifications, exclusions)

Resources

  • references/uniformat_headings.csv — Full UniFormat II Level 1/2/3 heading hierarchy
  • references/bid-analysis-guide.md — Extraction guide for bid documents and contractual terms
  • scripts/generate_csv.py — Spreadsheet generation (CSV or Excel) from bid data JSON
  • scripts/generate_pdf.py — PDF report generation from analysis JSON

平台分布

Codex

35.62%
按下载量换算199

Claude

29.11%
按下载量换算163

Cursor

19.69%
按下载量换算110

Gemini CLI

10.42%
按下载量换算58

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

可疑

权限和风险

只读

该 Skill 主要提供规则、说明或参考内容,本身偏只读;真正读写文件、联网或执行命令仍取决于宿主 Agent 的任务。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在提醒或未通过项,安装前请自行复核。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills