revenue-recognition-agent
ASC 606 / IFRS 15 revenue recognition analysis and compliance for SaaS, services, and multi-element arrangements. Guides the 5-step recognition model, identifies performance obligations, determines transaction prices, allocates revenue across obligations, and tracks deferred/contract revenue. Produces journal entries, deferred revenue schedules, and disclosure checklists for audit-ready financials. Use when: recognizing revenue for contracts with customers, reviewing SaaS subscription treatment, analyzing multi-element bundles, booking deferred revenue, or preparing ASC 606 footnote disclosures. NOT for: tax revenue recognition (different rules), government contracts under ASC 808, or lease accounting (use ASC 842 guidance).
What this skill does
# Revenue Recognition Agent
ASC 606 / IFRS 15 revenue recognition for SaaS, professional services, and
multi-element arrangements. Covers the full 5-step model, deferred revenue
scheduling, journal entries, and audit disclosure checklists.
---
## When to Use This Skill
**Trigger phrases:**
- "How do we recognize this SaaS contract?"
- "Is this deferred revenue or revenue?"
- "Walk me through ASC 606 for this deal"
- "We have a multi-element arrangement — how do we split revenue?"
- "Customer paid upfront for 12 months — when do we book it?"
- "What are our performance obligations?"
- "Help me prepare the ASC 606 footnote disclosure"
- "SSP analysis for our pricing tiers"
**NOT for:**
- Tax revenue recognition — tax timing rules differ significantly from GAAP
- Government contracts under collaborative arrangements (ASC 808)
- Lease revenue — use ASC 842 / IFRS 16
- Insurance contract revenue — use ASC 944 / IFRS 17
- Financial instrument income (interest, dividends) — use ASC 320/ASC 835
- Crypto/token revenue — highly fact-specific, escalate to Irfan
---
## The 5-Step Model (ASC 606 / IFRS 15)
All revenue recognition flows through these five steps:
```
STEP 1: Identify the contract(s) with a customer
STEP 2: Identify the performance obligations in the contract
STEP 3: Determine the transaction price
STEP 4: Allocate the transaction price to the performance obligations
STEP 5: Recognize revenue when (or as) each obligation is satisfied
```
---
## Step-by-Step Guidance
### Step 1: Identify the Contract
A contract exists when ALL of these are met:
```
CONTRACT CRITERIA CHECKLIST (ASC 606-10-25-1)
─────────────────────────────────────────────
□ Parties have approved the contract (written, oral, or implied)
□ Each party's rights regarding goods/services are identifiable
□ Payment terms for the goods/services are identifiable
□ Contract has commercial substance
□ It is probable the entity will collect the consideration
```
**Collection probability assessment:**
- Review customer credit history, payment terms, and industry
- If collection is NOT probable → no revenue until collected
- Variable consideration subject to constraint (Step 3)
**Contract modifications:**
- Distinct new goods/services + standalone selling price → new contract
- Not distinct or not at SSP → modify original contract (prospective or cumulative catch-up)
---
### Step 2: Identify Performance Obligations
A performance obligation is a **promise to transfer a distinct good or service**.
**Distinct test (both criteria must be met):**
```
1. CAPABLE OF BEING DISTINCT: Customer can benefit from
the good/service on its own or with readily available resources.
2. DISTINCT WITHIN THE CONTRACT: Promise is separately
identifiable from other promises in the contract.
```
**Common SaaS / services obligations:**
| Arrangement Element | Typically Distinct? | Notes |
|---------------------|---------------------|-------|
| SaaS subscription | Yes (standalone) | Recognize ratably over term |
| Implementation/setup | Maybe | If customer can't benefit without SaaS → not distinct → combine |
| Training | Usually yes | Can purchase separately |
| Premium support | Yes | Separately priced, standalone value |
| Professional services (scoped) | Usually yes | Separate SOW |
| Professional services (highly integrated) | No | Combine with software |
| Content/data licenses | Yes | Distinct IP license |
| Hardware bundled with SaaS | Usually yes | Can use hardware independently |
**Series of distinct services:**
- SaaS subscriptions = series of distinct services (each day/month of access)
- Treated as single performance obligation
- Revenue recognized ratably (straight-line) over subscription period
---
### Step 3: Determine the Transaction Price
Transaction price = consideration the entity expects to be entitled to.
**Components to analyze:**
```
Transaction Price Components
─────────────────────────────────────────────
1. FIXED CONSIDERATION
→ Contract price net of discounts
2. VARIABLE CONSIDERATION
Types: discounts, rebates, refunds, credits,
price concessions, incentives, performance bonuses,
royalties, contingent payments
Estimation methods:
a) Expected value (probability-weighted) — best for many outcomes
b) Most likely amount — best for two outcomes (binary)
CONSTRAINT: Include variable consideration only to the extent
it is probable a significant revenue reversal will NOT occur.
3. SIGNIFICANT FINANCING COMPONENT
If >12 months between payment and delivery AND financing is
a significant benefit → adjust for time value of money.
Practical expedient: If contract < 1 year, ignore financing.
4. NON-CASH CONSIDERATION
Measure at fair value of non-cash consideration received.
5. CONSIDERATION PAYABLE TO CUSTOMER
(Discounts, coupons, rebates)
→ Reduce transaction price unless payment is for distinct good/service
```
---
### Step 4: Allocate Transaction Price
Allocate based on **Standalone Selling Price (SSP)** of each performance obligation.
**SSP determination methods (in order of preference):**
```
1. OBSERVABLE PRICE
→ Actual price when entity sells the good/service separately.
→ Best evidence. Use when available.
2. ADJUSTED MARKET ASSESSMENT APPROACH
→ Price the market would pay for the good/service.
→ Research competitor pricing, customer willingness to pay.
3. EXPECTED COST PLUS MARGIN APPROACH
→ Forecast costs to satisfy the obligation + appropriate margin.
4. RESIDUAL APPROACH (limited use)
→ SSP = Transaction price - sum of SSPs of other obligations.
→ Only permitted if SSP is highly variable or uncertain.
```
**Allocation example:**
```
Contract: $12,000 annual SaaS deal
Includes: SaaS license + Implementation + Training
Element SSP Allocation % Allocated Price
─────────────────────────────────────────────────────────
SaaS License $10,000 71.4% $8,571
Implementation $2,500 17.9% $2,143
Training $1,500 10.7% $1,286
─────────────────────────────────────────────
Total SSP $14,000 100% $12,000
Note: Contract price ($12k) is less than total SSP ($14k) —
the $2,000 discount is allocated proportionally across all obligations.
```
---
### Step 5: Recognize Revenue
**Over time** (straight-line or input/output method) when ANY criterion is met:
```
□ Customer simultaneously receives and consumes the benefits
(→ SaaS subscriptions, most services)
□ Entity's performance creates or enhances an asset the
customer controls (→ customized software for customer)
□ Entity's performance creates no alternative use AND entity
has right to payment for work completed to date (→ custom dev)
```
**At a point in time** (when control transfers) for all other obligations:
```
Indicators of control transfer:
□ Entity has right to payment
□ Customer has legal title
□ Entity has transferred physical possession
□ Customer has significant risks and rewards
□ Customer has accepted the asset
```
**Common patterns:**
| Obligation Type | Recognition Pattern | Measure |
|----------------|---------------------|---------|
| SaaS subscription | Over time | Straight-line over term |
| Professional services (T&M) | Over time | Hours incurred / total estimated |
| Fixed-fee project | Over time | % complete (input method) |
| Software license (functional IP) | Point in time | License delivery date |
| Software license (symbolic IP) | Over time | Ratably |
| Training (one-time) | Point in time | Date training is delivered |
| Hardware sale | Point in time | Delivery / acceptance |
---
## Deferred Revenue Scheduling
### SaaS Subscription Schedule
For a $12,000 annual contract starting March 1, 2026 (fiscal year = calendar):
```
CONTRACT REVENUE SCHEDULE
─────────────────────────────────────────────────────────────
Contract: Acme Corp — Annual SaaS License
Period: March 1, 2026 Related in AI Agents
skill-development
IncludedComprehensive meta-skill for creating, managing, validating, auditing, and distributing Claude Code skills and slash commands (unified in v2.1.3+). Provides skill templates, creation workflows, validation patterns, audit checklists, naming conventions, YAML frontmatter guidance, progressive disclosure examples, and best practices lookup. Use when creating new skills, validating existing skills, auditing skill quality, understanding skill architecture, needing skill templates, learning about YAML frontmatter requirements, progressive disclosure patterns, tool restrictions (allowed-tools), skill composition, skill naming conventions, troubleshooting skill activation issues, creating custom slash commands, configuring command frontmatter, using command arguments ($ARGUMENTS, $1, $2), bash execution in commands, file references in commands, command namespacing, plugin commands, MCP slash commands, Skill tool configuration, or deciding between skills vs slash commands. Delegates to docs-management skill for official documentation.
reprompter
IncludedTransform messy prompts into well-structured, effective prompts — single or multi-agent. Use when: "reprompt", "reprompt this", "clean up this prompt", "structure my prompt", rough text needing XML tags and best practices, "reprompter teams", "repromptception", "run with quality", "smart run", "smart agents", multi-agent tasks, audits, parallel work, anything going to agent teams. Don't use when: simple Q&A, pure chat, immediate execution-only tasks. See "Don't Use When" section for details. Outputs: Structured XML/Markdown prompt, quality score (before/after), optional team brief + per-agent sub-prompts, agent team output files. Success criteria: Single mode quality score ≥ 7/10; Repromptception per-agent prompt quality score 8+/10; all required sections present, actionable and specific.
adaptive-compaction
IncludedAdaptive add-on policy and recovery layer that decides WHEN to compact, prune, snapshot, or fork -- replacing fixed-percent auto-compaction across Claude Code, Codex, and MCP-capable hosts. Trigger on auto-compact timing or damage: "when should I compact", "is it safe to compact now or start a fresh session", "auto-compact fires too early/mid-task", "switching to an unrelated task but the window still has space", "context rot", "answers get worse the longer the session runs", "the agent forgot the plan or my decisions after it summarized", "add a layer on top that manages context without changing the agent", raising autoCompactWindow to give the policy room, or installing/tuning a cross-tool compaction policy or PreCompact hook -- even when "compaction" is never said but the problem is context-window pressure or post-summarization memory loss. Do NOT use to summarize a conversation, build RAG, write a summarization prompt (decides WHEN not HOW), or answer max-context-length trivia.
agent-skill-creator
IncludedCreate cross-platform agent skills from workflow descriptions. Activates when users ask to create an agent, automate a repetitive workflow, create a custom skill, or need advanced agent creation. Triggers on phrases like create agent for, automate workflow, create skill for, every day I have to, daily I need to, turn process into agent, need to automate, create a cross-platform skill, validate this skill, export this skill, migrate this skill. Supports single skills, multi-agent suites, transcript processing, template-based creation, interactive configuration, cross-platform export, and spec validation.
llm-wiki
IncludedUse when building or maintaining a persistent personal knowledge base (second brain) in Obsidian where an LLM incrementally ingests sources, updates entity/concept pages, maintains cross-references, and keeps a synthesis current. Triggers include "second brain", "Obsidian wiki", "personal knowledge management", "ingest this paper/article/book", "build a research wiki", "compound knowledge", "Memex", or whenever the user wants knowledge to accumulate across sessions instead of being re-derived by RAG on every query.
skill-master
IncludedAgent Skills authoring, evaluation, and optimization. Create, edit, validate, benchmark, and improve skills following the agentskills.io specification. Use when designing SKILL.md files, structuring skill folders (references, scripts, assets), ingesting external documentation into skills, running trigger evals, benchmarking skill quality, optimizing descriptions, or performing blind A/B comparisons. Keywords: agentskills.io, SKILL.md, skill authoring, eval, benchmark, trigger optimization.