Skip to main content Skills Marketplace Descubra e explore skills de IA criadas pela comunidade.
Ocupações relacionadas SOC
Baseado na classificação ocupacional SOC
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Copiar promptMostrar detalhes do prompt Um comando direto ignora o prompt de revisão. Verifique a origem antes de executá-lo.
npx skills add https://github.com/ThomasMoreAI/legal-skills-open --skill claims-documentationO comando permanece em uma só linha. Role horizontalmente para revisá-lo antes de copiar.
Prefere uma cópia local? Baixe os arquivos disponíveis atualmente no SkillsMP.
Baixar Zip Baixando... Mais deste repositório fetching-arbitration-rules Use when retrieving arbitration institutional rules (ICC, LCIA, SCC, SIAC, HKIAC, VIAC, МКАС/МАК при ТПП України, UNCITRAL) — fetching current version, verifying redaction applicable to the date of arbitration agreement, constructing URLs for official rule texts
determining-pl-request-regime Use when choosing the Polish legal regime for letters, requests, applications, complaints, petitions, public-information requests, KPA filings, PPSA complaints, RODO access requests, registry extracts, court-file access, tax/ZUS/cudzoziemcy/USC procedures, or professional lawyer letters. Prevents mixing UDIP, KPA, PPSA, RODO, registry, special-procedure, and advocate/radca letter regimes.
applying-new-york-convention Use when preparing applications for recognition and enforcement of foreign arbitral awards in Poland, applications for setting aside arbitral awards under KPC art. 1205–1211, or opposing such applications — mapping Article V of the 1958 New York Convention to art. 1214–1215 of the Polish KPC, identifying grounds for refusal, structuring public policy arguments
name claims-documentation title Claims Documentation description Document construction claims for disputes and recovery. Compile evidence, calculate damages, track notice requirements, and prepare claim packages. author datadrivenconstruction author_url https://github.com/datadrivenconstruction/DDC_Skills_for_AI_Agents_in_Construction/tree/main/4_DDC_Curated/Contract-Legal/claims-documentation license MIT version 0.1.0 execution_mode open jurisdiction general practice construction language en
Claims Documentation
Overview
Document and manage construction claims for schedule delays, cost impacts, and scope disputes. Track contractual notice requirements, compile supporting evidence, calculate damages, and prepare comprehensive claim packages.
Claims Process
┌─────────────────────────────────────────────────────────────────┐
│ CLAIMS PROCESS │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Notice → Document → Quantify → Submit → Negotiate │
│ ────── ──────── ──────── ────── ───────── │
│ 📋 Identify 📂 Collect 💰 Calculate 📤 Package 🤝 Resolve │
│ 📧 Timely 📸 Evidence ⏱️ Time 📋 Format ⚖️ Settle │
│ 📝 Written 📄 Chain 📊 Cost ✓ Review 💵 Payment │
│ │
└─────────────────────────────────────────────────────────────────┘
Technical Implementation
from dataclasses import dataclass, field
from typing import List , Dict , Optional
from datetime import datetime, timedelta
from enum import Enum
class ClaimType (Enum ):
DELAY = "delay"
DISRUPTION = "disruption"
ACCELERATION = "acceleration"
DIFFERING_CONDITIONS = "differing_conditions"
OWNER_CHANGE = "owner_change"
SUSPENSION = "suspension"
TERMINATION = "termination"
DEFECTIVE_SPECS = "defective_specs"
class ClaimStatus (Enum ):
DRAFT = "draft"
NOTICE_SENT = "notice_sent"
DOCUMENTING = "documenting"
SUBMITTED = "submitted"
UNDER_REVIEW =
NEGOTIATING =
SETTLED =
DISPUTED =
LITIGATION =
WITHDRAWN =
( ):
DAILY_REPORT =
PHOTO =
VIDEO =
EMAIL =
LETTER =
MEETING_MINUTES =
SCHEDULE =
COST_RECORD =
INVOICE =
TIMESHEET =
WEATHER_DATA =
DELIVERY_TICKET =
INSPECTION_REPORT =
RFI =
SUBMITTAL =
:
:
evidence_type: EvidenceType
description:
date: datetime
file_path:
source:
relevance:
authenticated: =
:
notice_type:
deadline_days:
recipient:
method:
contract_reference:
sent: =
sent_date: [datetime] =
confirmation: =
:
category:
description:
amount:
basis:
supporting_docs: [ ] = field(default_factory= )
:
:
claim_type: ClaimType
title:
description:
status: ClaimStatus
event_date: datetime
discovery_date: datetime
responsible_party:
contract_references: [ ] = field(default_factory= )
notice_requirements: [NoticeRequirement] = field(default_factory= )
notice_compliant: =
evidence: [Evidence] = field(default_factory= )
narrative: =
time_claimed_days: =
cost_claimed: =
damage_calculations: [DamageCalculation] = field(default_factory= )
time_awarded_days: =
amount_awarded: =
settlement_date: [datetime] =
settlement_notes: =
:
DEFAULT_NOTICE_REQUIREMENTS = {
ClaimType.DELAY: [
{ : , : , : },
{ : , : , : },
],
ClaimType.DIFFERING_CONDITIONS: [
{ : , : , : },
{ : , : , : },
],
ClaimType.OWNER_CHANGE: [
{ : , : , : },
],
}
( ):
.project_name = project_name
.contract_date = contract_date
.claims: [ , Claim] = {}
( ) -> Claim:
claim_id =
claim = Claim(
=claim_id,
claim_type=claim_type,
title=title,
description=description,
status=ClaimStatus.DRAFT,
event_date=event_date,
discovery_date=datetime.now(),
responsible_party=responsible_party
)
req .DEFAULT_NOTICE_REQUIREMENTS.get(claim_type, []):
notice = NoticeRequirement(
notice_type=req[ ],
deadline_days=req[ ],
recipient=responsible_party,
method=req[ ],
contract_reference=
)
claim.notice_requirements.append(notice)
.claims[claim_id] = claim
claim
( ) -> NoticeRequirement:
claim_id .claims:
ValueError( )
claim = .claims[claim_id]
notice claim.notice_requirements:
notice.notice_type == notice_type:
notice.sent =
notice.sent_date = datetime.now()
notice.confirmation = confirmation
claim.notice_compliant = (n.sent n claim.notice_requirements)
claim.status == ClaimStatus.DRAFT:
claim.status = ClaimStatus.NOTICE_SENT
notice
ValueError( )
( ) -> [ ]:
claim_id .claims:
ValueError( )
claim = .claims[claim_id]
status = []
notice claim.notice_requirements:
deadline = claim.event_date + timedelta(days=notice.deadline_days)
days_remaining = (deadline - datetime.now()).days
status.append({
: notice.notice_type,
: deadline,
: days_remaining,
: notice.sent,
: days_remaining < notice.sent,
: notice.sent ( days_remaining < )
})
status
( ) -> Evidence:
claim_id .claims:
ValueError( )
evidence_id =
evidence = Evidence(
=evidence_id,
evidence_type=evidence_type,
description=description,
date=date,
file_path=file_path,
source=source,
relevance=relevance
)
.claims[claim_id].evidence.append(evidence)
.claims[claim_id].status == ClaimStatus.NOTICE_SENT:
.claims[claim_id].status = ClaimStatus.DOCUMENTING
evidence
( ) -> DamageCalculation:
claim_id .claims:
ValueError( )
calc = DamageCalculation(
category=category,
description=description,
amount=amount,
basis=basis,
supporting_docs=supporting_docs []
)
claim = .claims[claim_id]
claim.damage_calculations.append(calc)
claim.cost_claimed = (c.amount c claim.damage_calculations)
calc
( ) -> :
claim_id .claims:
ValueError( )
claim = .claims[claim_id]
extended_general_conditions = delay_days * daily_rate
.add_damage_calculation(
claim_id, ,
,
extended_general_conditions,
)
escalation =
include_escalation:
escalation = extended_general_conditions *
.add_damage_calculation(
claim_id, ,
,
escalation,
)
claim.time_claimed_days = delay_days
{
: delay_days,
: daily_rate,
: extended_general_conditions,
: escalation,
: claim.cost_claimed
}
( ):
claim_id .claims:
ValueError( )
.claims[claim_id].narrative = narrative
( ) -> Claim:
claim_id .claims:
ValueError( )
claim = .claims[claim_id]
claim.status = ClaimStatus.SUBMITTED
claim
( ) -> Claim:
claim_id .claims:
ValueError( )
claim = .claims[claim_id]
claim.status = ClaimStatus.SETTLED
claim.time_awarded_days = time_awarded
claim.amount_awarded = amount_awarded
claim.settlement_date = datetime.now()
claim.settlement_notes = notes
claim
( ) -> :
claim_id .claims:
claim = .claims[claim_id]
lines = [
,
,
,
,
,
,
]
i, ev ( (claim.evidence, key= e: e.date), ):
lines.append(
)
.join(lines)
( ) -> :
claim_id .claims:
claim = .claims[claim_id]
lines = [
,
,
,
,
,
,
,
,
,
,
,
,
,
,
claim.description,
,
,
,
,
,
,
claim.narrative claim.narrative ,
,
,
,
]
ref claim.contract_references:
lines.append( )
lines.extend([
,
,
,
,
])
notice claim.notice_requirements:
deadline = claim.event_date + timedelta(days=notice.deadline_days)
status = notice.sent
sent = notice.sent_date.strftime( ) notice.sent_date
lines.append( )
lines.extend([
,
,
,
,
])
calc claim.damage_calculations:
lines.append( )
lines.extend([
,
,
,
,
,
,
])
by_type = {}
ev claim.evidence:
t = ev.evidence_type.value
by_type[t] = by_type.get(t, ) +
t, count (by_type.items()):
lines.append( )
.join(lines)
"under_review"
"negotiating"
"settled"
"disputed"
"litigation"
"withdrawn"
class
EvidenceType
Enum
"daily_report"
"photo"
"video"
"email"
"letter"
"meeting_minutes"
"schedule"
"cost_record"
"invoice"
"timesheet"
"weather_data"
"delivery_ticket"
"inspection_report"
"rfi"
"submittal"
@dataclass
class
Evidence
id
str
str
str
str
str
bool
False
@dataclass
class
NoticeRequirement
str
int
str
str
str
bool
False
Optional
None
str
""
@dataclass
class
DamageCalculation
str
str
float
str
List
str
list
@dataclass
class
Claim
id
str
str
str
str
List
str
list
List
list
bool
False
List
list
str
""
int
0
float
0.0
List
list
int
0
float
0.0
Optional
None
str
""
class
ClaimsDocumentor
"""Document and manage construction claims."""
"notice_type"
"Intent to Claim"
"deadline_days"
21
"method"
"Written"
"notice_type"
"Detailed Claim"
"deadline_days"
45
"method"
"Written"
"notice_type"
"Immediate Notice"
"deadline_days"
2
"method"
"Written/Verbal"
"notice_type"
"Written Notice"
"deadline_days"
7
"method"
"Written"
"notice_type"
"Notice of Impact"
"deadline_days"
14
"method"
"Written"
def
__init__
self, project_name: str , contract_date: datetime
self
self
self
Dict
str
def
create_claim
self, claim_type: ClaimType, title: str ,
description: str , event_date: datetime,
responsible_party: str
"""Create new claim."""
f"CLM-{datetime.now().strftime('%Y%m%d%H%M%S' )} "
id
for
in
self
"notice_type"
"deadline_days"
"method"
""
self
return
def
record_notice_sent
self, claim_id: str , notice_type: str ,
confirmation: str = ""
"""Record that notice was sent."""
if
not
in
self
raise
f"Claim {claim_id} not found"
self
for
in
if
True
all
for
in
if
return
raise
f"Notice type {notice_type} not found"
def
check_notice_deadlines
self, claim_id: str
List
Dict
"""Check status of notice deadlines."""
if
not
in
self
raise
f"Claim {claim_id} not found"
self
for
in
"notice_type"
"deadline"
"days_remaining"
"sent"
"overdue"
0
and
not
"status"
"Sent"
if
else
"OVERDUE"
if
0
else
f"{days_remaining} days left"
return
def
add_evidence
self, claim_id: str , evidence_type: EvidenceType,
description: str , date: datetime, file_path: str ,
source: str , relevance: str
"""Add evidence to claim."""
if
not
in
self
raise
f"Claim {claim_id} not found"
f"EVD-{len (self.claims[claim_id].evidence)+1 :04d} "
id
self
if
self
self
return
def
add_damage_calculation
self, claim_id: str , category: str ,
description: str , amount: float ,
basis: str , supporting_docs: List [str ] = None
"""Add damage calculation to claim."""
if
not
in
self
raise
f"Claim {claim_id} not found"
or
self
sum
for
in
return
def
calculate_delay_damages
self, claim_id: str , delay_days: int ,
daily_rate: float ,
include_escalation: bool = True
Dict
"""Calculate delay damages using Eichleay formula or daily rate."""
if
not
in
self
raise
f"Claim {claim_id} not found"
self
self
"Extended General Conditions"
f"{delay_days} days × ${daily_rate:,.2 f} /day"
"Daily rate method"
0
if
0.03
self
"Material/Labor Escalation"
"Cost increase due to extended duration"
"3% escalation factor"
return
"delay_days"
"daily_rate"
"extended_gc"
"escalation"
"total"
def
write_narrative
self, claim_id: str , narrative: str
"""Write claim narrative."""
if
not
in
self
raise
f"Claim {claim_id} not found"
self
def
submit_claim
self, claim_id: str
"""Submit claim."""
if
not
in
self
raise
f"Claim {claim_id} not found"
self
return
def
record_settlement
self, claim_id: str , time_awarded: int ,
amount_awarded: float , notes: str = ""
"""Record claim settlement."""
if
not
in
self
raise
f"Claim {claim_id} not found"
self
return
def
generate_evidence_index
self, claim_id: str
str
"""Generate evidence index."""
if
not
in
self
return
"Claim not found"
self
"# Evidence Index"
""
f"**Claim:** {claim.title} "
f"**Claim ID:** {claim.id } "
""
"| # | Type | Date | Description | Source | Relevance |"
"|---|------|------|-------------|--------|-----------|"
for
in
enumerate
sorted
lambda
1
f"| {i} | {ev.evidence_type.value} | {ev.date.strftime('%Y-%m-%d' )} | "
f"{ev.description[:30 ]} | {ev.source} | {ev.relevance[:30 ]} |"
return
"\n"
def
generate_claim_package
self, claim_id: str
str
"""Generate complete claim package."""
if
not
in
self
return
"Claim not found"
self
"# CLAIM PACKAGE"
""
f"## Claim: {claim.title} "
""
f"**Claim ID:** {claim.id } "
f"**Type:** {claim.claim_type.value.replace('_' , ' ' ).title()} "
f"**Status:** {claim.status.value} "
f"**Event Date:** {claim.event_date.strftime('%Y-%m-%d' )} "
f"**Responsible Party:** {claim.responsible_party} "
""
"---"
""
"## 1. Executive Summary"
""
""
f"**Time Claimed:** {claim.time_claimed_days} days"
f"**Amount Claimed:** ${claim.cost_claimed:,.2 f} "
""
"## 2. Factual Narrative"
""
if
else
"*Narrative pending*"
""
"## 3. Contract References"
""
for
in
f"- {ref} "
""
"## 4. Notice Compliance"
""
"| Notice Type | Deadline | Status | Sent Date |"
"|-------------|----------|--------|-----------|"
for
in
"✓ Sent"
if
else
"Pending"
'%Y-%m-%d'
if
else
"-"
f"| {notice.notice_type} | {deadline.strftime('%Y-%m-%d' )} | {status} | {sent} |"
""
"## 5. Damage Calculations"
""
"| Category | Description | Amount | Basis |"
"|----------|-------------|--------|-------|"
for
in
f"| {calc.category} | {calc.description} | ${calc.amount:,.2 f} | {calc.basis} |"
""
f"**Total Claimed: ${claim.cost_claimed:,.2 f} **"
""
"## 6. Evidence Summary"
""
f"Total Documents: {len (claim.evidence)} "
""
for
in
0
1
for
in
sorted
f"- {t.replace('_' , ' ' ).title()} : {count} "
return
"\n"
Quick Start from datetime import datetime, timedelta
documentor = ClaimsDocumentor("Office Tower" , datetime(2024 , 1 , 1 ))
claim = documentor.create_claim(
claim_type=ClaimType.DELAY,
title="Owner-Caused Delay - Design Changes" ,
description="Multiple design changes to structural system caused 45-day delay" ,
event_date=datetime(2024 , 6 , 15 ),
responsible_party="Owner"
)
deadlines = documentor.check_notice_deadlines(claim.id )
for d in deadlines:
print (f"{d['notice_type' ]} : {d['status' ]} " )
documentor.record_notice_sent(claim.id , "Intent to Claim" , "Certified Mail #12345" )
documentor.add_evidence(
claim.id ,
EvidenceType.RFI,
"RFI-042 requesting structural clarification" ,
datetime(2024 , 6 , 10 ),
"/docs/RFI-042.pdf" ,
"Project Files" ,
"Shows owner's delayed response"
)
damages = documentor.calculate_delay_damages(
claim.id ,
delay_days=45 ,
daily_rate=5000.0
)
print (f"Total damages: ${damages['total' ]:,.2 f} " )
documentor.write_narrative(claim.id , """
On June 15, 2024, the Owner issued a design change directive requiring
modifications to the structural steel at Levels 5-8. This change...
""" )
print (documentor.generate_claim_package(claim.id ))
Requirements pip install (no external dependencies)