About contract-template
contract-template is a skill for creating Accord Project smart contract templates. It combines natural-language terms, a data model, and business logic for users who need structured contracts with executable logic.
Key features
- 01Generate Accord Project contract templates
- 02Write natural-language TemplateMark
- 03Define Concerto data models
- 04Add Ergo business logic
- 05Parse and trigger templates with Cicero
Use cases
- 01Create an NDA with variable terms
- 02Draft a service agreement with payment milestones
- 03Generate rental or consulting contract templates
Install
Copy the command and run it in a terminal.
$
npx skills add https:/ / github.com/ claude-office-skills/ skills --skill contract-templateAfter installing, type/contract-templatein Claude Code to confirm it loaded.
Details
From the project READMEContract Template Skill
Overview
This skill enables creation of smart contract templates using Accord Project - an open-source framework for legally enforceable, machine-readable contracts. Create templates with embedded logic that can automate contract execution.
How to Use
- Describe the contract type and terms
- Specify variables and logic rules
- I'll generate Accord Project template
Example prompts:
- "Create an NDA template with variable terms"
- "Build a service agreement with payment milestones"
- "Generate a rental agreement template"
- "Design a consulting contract with termination clauses"
Domain Knowledge
Template Structure
contract-template/
├── package.json # Metadata
├── grammar/
│ └── template.tem.md # Natural language template
├── model/
│ └── model.cto # Data model
├── logic/
│ └── logic.ergo # Business logic
└── text/
└── sample.md # Sample contract
Template Syntax (TemplateMark)
# Service Agreement
This Agreement is made between [{supplier}] ("Supplier")
and [{buyer}] ("Buyer").
## Services
The Supplier agrees to provide [{serviceDescription}].
## Payment
The Buyer shall pay [{paymentAmount}] within
[{paymentDays}] days of invoice.
## Term
This Agreement begins on [{startDate as "MMMM DD, YYYY"}]
and continues for [{termMonths}] months.
{{#if latePenalty}}
## Late Payment
A penalty of [{penaltyPercent}]% applies to late payments.
{{/if}}
Data Model (Concerto)
namespace org.example.service
import org.accordproject.time.*
asset ServiceAgreement extends Contract {
o String supplier
o String buyer
o String serviceDescription
o Double paymentAmount
o Integer paymentDays
o DateTime startDate
o Integer termMonths
o Boolean latePenalty optional
o Double penaltyPercent optional
}
transaction PaymentRequest {
o Double amount
o DateTime dueDate
}
transaction PaymentResponse {
o Double amount
o Double penalty
o DateTime paymentDue
}
Business Logic (Ergo)
namespace org.example.service
import org.accordproject.time.*
contract ServiceContract over ServiceAgreement {
clause payment(request : PaymentRequest) : PaymentResponse {
let dueDate = addDuration(request.dueDate,
Duration{ amount: contract.paymentDays, unit: ~org.accordproject.time.TemporalUnit.days });
let penalty =
if contract.latePenalty
then request.amount * contract.penaltyPercent / 100.0
else 0.0;
return PaymentResponse{
amount: request.amount,
penalty: penalty,
paymentDue: dueDate
}
}
}
Using Cicero CLI
# Install
npm install -g @accordproject/cicero-cli
# Parse contract
cicero parse --template ./contract-template --sample ./text/sample.md
# Execute logic
cicero trigger --template ./contract-template \
--sample ./text/sample.md \
--request ./request.json
# Draft new contract
cicero draft --template ./contract-template --data ./data.json
Example: NDA Template
template.tem.md
# Non-Disclosure Agreement
This Non-Disclosure Agreement ("Agreement") is entered into
as of [{effectiveDate as "MMMM DD, YYYY"}] by and between:
**Disclosing Party:** [{disclosingParty}]
**Receiving Party:** [{receivingParty}]
## 1. Confidential Information
"Confidential Information" means all non-public information
disclosed by the Disclosing Party, including but not limited to:
[{confidentialScope}].
## 2. Obligations
The Receiving Party agrees to:
- Maintain confidentiality for [{termYears}] years
- Use information only for [{permittedPurpose}]
- Not disclose to third parties without written consent
## 3. Exclusions
This Agreement does not apply to information that:
{{#if hasExclusions}}
[{exclusions}]
{{else}}
- Is or becomes publicly available
- Was known prior to disclosure
- Is independently developed
{{/if}}
## 4. Return of Materials
Upon termination, the Receiving Party shall return or destroy
all Confidential Information within [{returnDays}] days.
## 5. Remedies
{{#if monetaryPenalty}}
Breach of this Agreement shall result in liquidated damages
of [{penaltyAmount}].
{{else}}
The Disclosing Party shall be entitled to seek injunctive relief.
{{/if}}
**SIGNATURES**
Disclosing Party: ____________________
Date: ____________________
Receiving Party: ____________________
Date: ____________________
data.json
{
"effectiveDate": "2024-01-15",
"disclosingParty": "Tech Corp",
"receivingParty": "Consultant LLC",
"confidentialScope": "trade secrets, customer lists, and technical specifications",
"termYears": 3,
"permittedPurpose": "evaluating a potential business relationship",
"hasExclusions": false,
"returnDays": 30,
"monetaryPenalty": true,
"penaltyAmount": "$50,000"
}
Resources
Comments
Markdown supported