基于 SOC 职业分类
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/ffsshhttiikk/opencode-agents-skills --skill civil命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
| name | civil |
| description | Civil infrastructure and construction |
| license | MIT |
| compatibility | opencode |
| metadata | {"audience":"engineers, contractors, project managers","category":"engineering"} |
| Material | Properties | Common Uses |
|---|---|---|
| Concrete | High compressive strength, low tensile | Foundations, slabs, columns |
| Steel | High strength, ductile | Frames, reinforcement |
| Masonry | Compressive strength, fire resistant | Walls, foundations |
| Wood | Renewable, easy to work | Framing, formwork |
| Asphalt | Flexible, waterproof | Pavements, roofing |
PROJECT_PHASES = {
"pre_design": {
"activities": ["Feasibility study", "Site selection", "Budget estimate"],
"deliverable": "Project charter"
},
"design": {
"activities": ["Schematic design", "Design development", "Construction documents"],
"deliverable": "Drawings, specifications"
},
"procurement": {
"activities": ["Bidding", "Contractor selection", "Material ordering"],
"deliverable": "Contracts"
},
"construction": {
"activities": ["Site preparation", "Foundation", "Structure", "MEP", "Finishes"],
"deliverable": "Completed facility"
},
"closeout": {
"activities": ["Testing", "Commissioning", "Training", "Documentation"],
"deliverable": "Final project"
}
}
| Type | Payment | Risk |
|---|---|---|
| Lump Sum | Fixed price | Contractor |
| Cost Plus | Actual cost + fee | Owner |
| Time & Materials | Hourly rates | Shared |
| Unit Price | Per unit quantity | Shared |
| Design-Build | Single contract | Contractor |
| EPC | Turnkey | Contractor |
# Grading calculations
def cut_fill_volumes(grid, target_elevation):
"""Calculate cut and fill volumes from grid"""
cut_volume = 0
fill_volume = 0
for cell in grid:
elevation_diff = cell.elevation - target_elevation
volume = elevation_diff * cell.area
if elevation_diff > 0:
cut_volume += volume
else:
fill_volume += abs(volume)
return {"cut": cut_volume, "fill": fill_volume}