Attio Enhanced CRM

PendingStatic analysis audit pending.

Overview

No static analysis result has been recorded yet. Pattern checks will appear here once the artifact has been analyzed.

Findings (0)

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

What this means

A user may install the skill without realizing it needs an Attio API key that can act on CRM data in their workspace.

Why it was flagged

The skill requires Attio account credentials, while the registry metadata lists required env vars and primary credential as none. This under-declares delegated access to the user's Attio workspace.

Skill content
export ATTIO_API_KEY=your_api_key
export ATTIO_WORKSPACE_ID=your_workspace_id
Recommendation

Declare the Attio API key and workspace ID in registry metadata, document required Attio API scopes, and advise users to use a least-privilege/revocable API key.

What this means

A mistaken or overly broad request could create or update many CRM records in the user's Attio workspace.

Why it was flagged

The skill can perform bulk mutations in a business CRM, but the artifacts do not define confirmation, dry-run, batch-size limits, object/field allowlists, or rollback guidance.

Skill content
- **Batch Operations**: Bulk create/update records
- **Company & Person Support**: Create companies, people, deals
Recommendation

Require explicit user confirmation before writes, add dry-run/preview mode, document safe limits, and provide rollback or duplicate-handling guidance for bulk operations.

What this means

Contact or CRM details could appear in local logs or exception output even though the documentation says sensitive data is not logged.

Why it was flagged

The code logs and embeds full Attio API error bodies in exceptions, while README.md claims 'Sensitive data is not logged.' CRM API error bodies may include submitted record fields or identifiers.

Skill content
self.logger.error(f"Error response: {error_text}") ... error = requests.exceptions.HTTPError(f"{response.status_code} {response.reason} | {error_text}", response=response)
Recommendation

Redact error bodies before logging, avoid including full API responses in exception messages by default, and update the security documentation to accurately describe logging behavior.

What this means

If enrichment features are used, names, emails, companies, or other contact details may be sent outside Attio without clear provider documentation.

Why it was flagged

The documentation says contact enrichment may use external sources, but it does not identify providers, data sent, retention, or user consent boundaries.

Skill content
- Contact data enrichment from external sources
- Social media profile integration
- Industry and size data augmentation
Recommendation

Document each enrichment provider, the exact fields shared, retention/privacy terms, and provide an opt-in control before sending contact data to enrichment services.

What this means

Future dependency versions could change behavior, and users may not get a clear registry-level install prompt.

Why it was flagged

The dependencies are installed from version ranges rather than pinned versions, and the registry says there is no install spec even though README/config instruct dependency installation.

Skill content
requests>=2.28.0
aiohttp>=3.8.0
tenacity>=8.0.0
Recommendation

Add an explicit install spec and pin or lock dependency versions for reproducible installation.