Imported from kody-w/rapp-monorepo (
repos/RAR/scout/bundles/cowork-cookbook-148/skills/rar-cowork-cookbook-report-transfer-assets/SKILL.md). Install upstream withnpx skills add kody-w/rapp-monorepo --skill rar-cowork-cookbook-report-transfer-assets. Copyright stays with the author.
Microsoft Scout runtime
This is the reversible Scout projection of @cowork-cookbook/report_transfer_assets. The original RAPP
agent is preserved byte-for-byte in report_transfer_assets_agent.py and in the RCI capsule.
When Scout can execute local files, resolve this skill directory and run:
python3 scripts/run_agent.py --preflight
echo '{}' | python3 scripts/run_agent.py
Pass the real JSON arguments instead of {}. The runner verifies the linked
agent SHA-256 before importing it. If preflight reports a host dependency that
Scout cannot satisfy, use the brainstem_chat MCP tool to run the canonical
agent in the user's Brainstem. Never paraphrase the factory or agent into a new
implementation. The generic direct-file commands in the generated Toaster
section are recovery guidance; Scout should prefer the verified runner.
Transfer assets Summary Report — Builds a structured summary report of transfer assets activity with totals, trends, and breakdowns.
AGGREGATED ENTRY. The content authority for this capability is the upstream library; this file is the structured RAR container for it. It carries a manifest, a version locked to upstream, a content hash, a provenance record and a public feedback thread — none of which the upstream entry has on its own.
Nothing from upstream is reproduced here. What runs below is RAR's own method for this shape of work — a author capability — generated from the metadata we index. The upstream library remains the authority for its own instructions; this agent is callable on its own terms and links home for the source.
Source library : Cowork Cookbook (Sean Galliher and Cowork Cookbook contributors) Upstream entry : https://coworkcookbook.com/recipes/report-transfer-assets Upstream author: Sean Galliher and Cowork Cookbook contributors Upstream version: 1.0.0 Licence : CC-BY-4.0
Regenerated automatically by scripts/generate_aggregated_agents.py whenever the upstream record changes, so this file and its source cannot silently diverge.
Parameters
The typed contract this capability answers to (JSON Schema — the deterministic layer):
{
"properties": {
"audience": {
"description": "Optional. Who reads it \u2014 this drives register, length and what can be assumed.",
"type": "string"
},
"operation": {
"description": "What to do: run, plan, checklist, describe.",
"enum": [
"run",
"plan",
"checklist",
"describe"
],
"type": "string"
},
"subject": {
"description": "What to produce, and about what.",
"type": "string"
}
},
"required": [
"operation"
],
"type": "object"
}
Run this — do not improvise
This capability's deterministic implementation is a RAPP single-file agent, linked beside this file as report_transfer_assets_agent.py and embedded as the fenced Python below (sha256 794f2828eba0e5de…; a byte-exact copy is also vaulted in the capsule comment at the end of this file). On a host with sandbox execution, run the linked file directly — if it is missing, write the fence contents verbatim to report_transfer_assets_agent.py first:
python3 report_transfer_assets_agent.py '{"key": "value"}' # arguments as one JSON object
echo '{"key": "value"}' | python3 report_transfer_assets_agent.py # or on stdin
python3 report_transfer_assets_agent.py --tool # emit the JSON tool contract
Treat stdout as a tool result. If it reports missing or unresolved inputs, stop and collect them. If it returns steps, execute those steps in order exactly as returned; if it returns instructions, follow them with the supplied inputs. Otherwise use the result verbatim. Do not invent behavior beyond that output. On a host without code execution, treat the Parameters schema and the code below as the exact specification and never paraphrase a step. Never edit inside the generated markers; a converter-equipped host can instead restore the original file checksum-verified with the installed rapp-agent-converter/scripts/toast.py convert SKILL.md --to agent.
"""
Transfer assets Summary Report — Builds a structured summary report of transfer assets activity with totals, trends, and breakdowns.
AGGREGATED ENTRY. The content authority for this capability is the upstream
library; this file is the structured RAR container for it. It carries a
manifest, a version locked to upstream, a content hash, a provenance record and
a public feedback thread — none of which the upstream entry has on its own.
Nothing from upstream is reproduced here. What runs below is RAR's own method
for this shape of work — a author capability — generated from the metadata
we index. The upstream library remains the authority for its own instructions;
this agent is callable on its own terms and links home for the source.
Source library : Cowork Cookbook (Sean Galliher and Cowork Cookbook contributors)
Upstream entry : https://coworkcookbook.com/recipes/report-transfer-assets
Upstream author: Sean Galliher and Cowork Cookbook contributors
Upstream version: 1.0.0
Licence : CC-BY-4.0
Regenerated automatically by scripts/generate_aggregated_agents.py whenever the
upstream record changes, so this file and its source cannot silently diverge.
"""
__manifest__ = {
"schema": "rapp-agent/1.0",
"name": '@cowork-cookbook/report_transfer_assets',
"version": '2.0.0',
"display_name": 'Transfer assets Summary Report',
"description": 'Builds a structured summary report of transfer assets activity with totals, trends, and breakdowns.',
"author": 'Sean Galliher and Cowork Cookbook contributors',
"tags": ['industry_solution', 'business_process', 'prompt', 'report', 'acquire_to_dispose', 'intermediate', 'integration', 'dynamics_365_erp'],
"category": 'integrations',
"quality_tier": 'verified',
"requires_env": [],
"dependencies": ["@rapp/basic_agent"],
# Provenance. `content_digest` fingerprints the upstream record; when it
# moves, this file is regenerated. `--check` fails the build on drift.
"source": {
"aggregated": True,
"source_id": 'cowork-cookbook',
"source_name": 'Cowork Cookbook',
"source_url": 'https://coworkcookbook.com/',
"upstream_slug": 'report-transfer-assets',
"upstream_url": 'https://coworkcookbook.com/recipes/report-transfer-assets',
"upstream_version": '1.0.0',
"license": 'CC-BY-4.0',
"license_verified": True,
"details": {'license_note': 'Recipe content is CC BY 4.0 and code is MIT. RAR remains index-only: it stores normalized metadata and attribution, then generates its own callable method from that metadata without copying recipe prompts or bundles.', 'license_url': 'https://github.com/seangalliher/Coworkcookbook/blob/main/LICENSE', 'repository_url': 'https://github.com/seangalliher/Coworkcookbook', 'taxonomy_url': 'https://coworkcookbook.com/data/taxonomy.json'},
"content_digest": 'fa370a70ab5c0b75',
},
"industry_context": {'deprecated': False, 'difficulty': 'intermediate', 'last_verified_on': '2026-05-25', 'mutates_data': False, 'plugin': 'dynamics-365-erp', 'process_roots': ['acquire-to-dispose'], 'process_tags': ['acquire-to-dispose/manage-active-assets/transfer-assets'], 'recipe_category': 'report', 'recipe_type': 'prompt', 'upstream_path': 'acquire-to-dispose/report-transfer-assets', 'uses_skills': {'custom': [], 'ootb': ['Excel'], 'plugin': [{'action': 'data_find_entity_type', 'plugin': 'dynamics-365-erp'}, {'action': 'data_find_entities_sql', 'plugin': 'dynamics-365-erp'}]}, 'verification_status': 'verified'},
# The platforms the upstream entry targets. First-class and queryable, not
# buried in prose: this is what lets the registry answer "what can I launch
# into Copilot Studio / Cowork / Scout", which is the whole reason an
# agent.py container beats a bare skill entry for cross-platform reach.
"platforms": ['Microsoft 365 Copilot Cowork'],
}
try:
from agents.basic_agent import BasicAgent
except ModuleNotFoundError:
class BasicAgent:
def __init__(self, name, metadata):
self.name = name
self.metadata = metadata
# The toasted capability. The upstream entry supplies the WHAT; this procedure
# is RAR's own method for that shape of work, generated by
# @kody-w/skill_toaster_agent from the metadata we hold. No upstream text is
# reproduced here — see the module docstring.
_SPEC = {'archetype': 'author', 'checks': ['The claim is stated in the first paragraph, not withheld.', 'Every section maps to the claim.', 'Numbers are sourced and current.', 'The ask is explicit and actionable.'], 'confidence': 0.333, 'deliverable': 'A finished draft with a stated claim, an outline that serves it, and an explicit ask.', 'operations': ['run', 'plan', 'checklist', 'describe'], 'params': {'audience': 'Optional. Who reads it — this drives register, length and what can be assumed.', 'subject': 'What to produce, and about what.'}, 'refined_by': 'rules', 'signals': ['tag:report'], 'steps': ['Fix the reader and the decision. A document that does not change a decision does not need to exist.', 'State the single claim in one sentence before writing anything else. If it will not compress, the piece is not ready.', 'Outline to the claim: every section either supports it or is cut.', 'Draft at full length without editing, so structure problems surface before sentence problems.', 'Cut to the shortest version that still lands, then check each remaining paragraph earns its place.', 'Close with what the reader should do next, stated as an action rather than a summary.'], 'subject_label': 'document to produce', 'verb': 'Draft'}
class ReportTransferAssets(BasicAgent):
"""Draft agent, toasted from an aggregated upstream entry."""
def __init__(self):
self.name = 'ReportTransferAssets'
self.metadata = {
"name": self.name,
"display_name": __manifest__["display_name"],
"description": __manifest__["description"],
"parameters": {
"type": "object",
"properties": {'audience': {'description': 'Optional. Who reads it — this drives register, length and what can be assumed.', 'type': 'string'}, 'operation': {'description': 'What to do: run, plan, checklist, describe.', 'enum': ['run', 'plan', 'checklist', 'describe'], 'type': 'string'}, 'subject': {'description': 'What to produce, and about what.', 'type': 'string'}},
"required": ["operation"],
},
}
super().__init__(self.name, self.metadata)
# ── helpers ─────────────────────────────────────────────────────────
def _subject(self, kwargs):
for key in ("subject", "input", "target", "topic"):
value = str(kwargs.get(key) or "").strip()
if value:
return value
return ""
def _header(self, subject):
label = subject or f"<no {_SPEC['subject_label']} supplied>"
return f"{_SPEC['verb']}: {label}"
def _context(self, kwargs):
extras = []
for key in _SPEC["params"]:
if key == "subject":
continue
value = str(kwargs.get(key) or "").strip()
if value:
extras.append(f"{key}: {value}")
return extras
def _plan(self, subject, kwargs):
lines = [self._header(subject)]
extras = self._context(kwargs)
if extras:
lines += ["", "Context:"] + [f" {e}" for e in extras]
lines += ["", "Procedure:"]
lines += [f" {i}. {step}" for i, step in enumerate(_SPEC["steps"], 1)]
if not subject:
lines += [
"",
f"Pass subject=\u0022...\u0022 to bind this procedure to a "
f"specific {_SPEC['subject_label']}.",
]
return lines
def _checklist(self):
return ["Acceptance checks:"] + [f" [ ] {c}" for c in _SPEC["checks"]]
def _provenance(self):
src = __manifest__["source"]
lines = [
f"{__manifest__['display_name']} (v{__manifest__['version']})",
"",
__manifest__["description"],
"",
f"Capability shape: {_SPEC['archetype']} "
f"(confidence {_SPEC['confidence']})",
]
platforms = __manifest__.get("platforms") or []
if platforms:
lines.append("Runs on: " + ", ".join(platforms))
lines += [
"",
f"Indexed from: {src['source_name']}",
f"Upstream entry: {src['upstream_url']}",
f"Upstream author: {__manifest__['author']}",
"",
"RAR indexes this capability and implements its method; the "
"upstream library remains the authority for its own instructions. "
"Open the link above to get those from the source.",
]
return lines
# ── entry point ─────────────────────────────────────────────────────
def perform(self, **kwargs):
"""Run the toasted capability. Always returns a string."""
op = str(kwargs.get("operation") or "run").strip().lower()
subject = self._subject(kwargs)
if op == "describe":
return "\n".join(self._provenance())
if op == "checklist":
return "\n".join([self._header(subject), ""] + self._checklist())
if op == "plan":
return "\n".join(self._plan(subject, kwargs))
if op == "run":
lines = self._plan(subject, kwargs)
lines += [""] + self._checklist()
lines += ["", f"Deliverable: {_SPEC['deliverable']}"]
lines += ["", f"Source: {__manifest__['source']['upstream_url']}"]
return "\n".join(lines)
return (
f"Unknown operation {op!r}. Valid operations: "
+ ", ".join(_SPEC["operations"])
)
if __name__ == "__main__":
print(ReportTransferAssets().perform(operation="run"))