{"id":48457565,"url":"https://github.com/fullstorydev/fs-skills","last_synced_at":"2026-04-07T00:01:58.930Z","repository":{"id":335470458,"uuid":"1108516540","full_name":"fullstorydev/fs-skills","owner":"fullstorydev","description":null,"archived":false,"fork":false,"pushed_at":"2026-01-30T10:39:07.000Z","size":504,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-31T02:55:30.690Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fullstorydev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-02T14:55:27.000Z","updated_at":"2026-01-30T13:50:07.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/fullstorydev/fs-skills","commit_stats":null,"previous_names":["fullstorydev/fs-skills"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/fullstorydev/fs-skills","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fullstorydev%2Ffs-skills","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fullstorydev%2Ffs-skills/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fullstorydev%2Ffs-skills/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fullstorydev%2Ffs-skills/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fullstorydev","download_url":"https://codeload.github.com/fullstorydev/fs-skills/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fullstorydev%2Ffs-skills/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31494177,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-06T17:22:55.647Z","status":"ssl_error","status_checked_at":"2026-04-06T17:22:54.741Z","response_time":112,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-07T00:01:41.137Z","updated_at":"2026-04-07T00:01:58.923Z","avatar_url":"https://github.com/fullstorydev.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Fullstory Skills Repository (FSR)\n\n\u003e A comprehensive collection of Agent Skills for expert-level Fullstory semantic decoration guidance.\n\n## 🎯 What is FSR?\n\nThe **Fullstory Skills Repository (FSR)** is a structured collection of AI Agent Skills that provide expert-level guidance for Fullstory semantic decoration for digital experiences (FSD). FSD enables AI coding assistants to decorate digital experiences with semantic meaning. This exposes behavioral digital experience usage to Computer Use Agents and unlocks high fidelity analytic measurement directly in the DOM or mobile app view tree:\n\n- Guide developers through API implementation with good/bad examples\n- Apply industry-specific privacy requirements automatically\n- Reference regulatory compliance patterns (HIPAA, PCI, GDPR, etc.)\n- Recommend the right API for each use case\n\n---\n\n## 🆕 Latest Enhancements\n\n### Platform-Split Architecture (NEW)\nAll **core skills** and **framework skills** now use a three-file structure:\n- **`SKILL.md`** — Platform-agnostic core concepts, API parameters, best practices (START HERE)\n- **`SKILL-WEB.md`** — JavaScript/TypeScript implementation for web\n- **`SKILL-MOBILE.md`** — iOS (Swift), Android (Kotlin), Flutter (Dart), React Native\n\n**Always read SKILL.md first** for concepts, then the platform-specific file for implementation code.\n\n### SDK Installation vs API Usage\nThe skills repository covers **API usage** (how to identify users, track events, etc.). For **SDK installation**, see official Fullstory documentation:\n- **Web**: [Getting Started with Web](https://developer.fullstory.com/browser/getting-started/)\n- **Mobile**: See `meta/fullstory-getting-started/SKILL.md` for links to all mobile platform installation guides\n\n### Mobile Instrumentation Orchestrator (NEW)\nThe new `mobile-instrumentation-orchestrator` skill provides sequencing logic for mobile SDK implementation:\n- **Privacy → Identity → Navigation → Interaction → Diagnostics**\n- Routes to appropriate `SKILL-MOBILE.md` files for each platform\n\n### Stable Selectors — Data Attributes Guide Convention\nThe stable selectors skill follows the Fullstory Data Attributes Guide convention with five core attributes:\n- **Web**: `data-component`, `data-id`, `data-section`, `data-position`, `data-state`\n- **iOS**: `accessibilityIdentifier` (dot notation: `\"button.add-to-cart\"`)\n- **Android**: `testTag`, `contentDescription` (dot notation)\n- **React Native**: `testID` (dot notation)\n- **Flutter**: `Key`, `Semantics` (dot notation)\n- **Mobile (all platforms)**: `FS.setAttribute` for setting data attributes programmatically\n\n**Two Approaches** — agents ask users which they prefer:\n- **Framework Approach**: Build data attributes into shared components (design system auto-decoration). Benefits: zero effort for consuming devs, consistent naming, scales automatically, resilient to refactors.\n- **Individual Element Decoration**: Add attributes manually per element. Benefits: works with any codebase immediately, full control, test automation friendly with PascalCase names.\n- Most teams use a **Hybrid**: Framework for shared components + Individual for custom elements.\n\n### Privacy \u0026 Cookie Documentation\n- **Private by Default Mode**: Complete documentation for Fullstory's privacy-first capture mode\n- **First-Party Cookie Architecture**: `fs_uid` cookie behavior, session merging, and identity persistence\n- **Anonymous User Support**: Clarified that user properties work before identification\n\n### Industry-Specific Updates\n| Industry | New Content |\n|----------|-------------|\n| **Banking** | Open Banking/PSD2 requirements |\n| **Healthcare** | HIPAA de-identification standards (18 Safe Harbor identifiers) |\n| **E-commerce** | Marketplace/multi-vendor considerations |\n| **Gaming** | Fraud detection (7 types), game iframe decoration, responsible gaming compliance |\n| **SaaS** | AI/ML feature tracking patterns |\n| **Travel** | TSA Secure Flight requirements |\n| **Media** | Accessibility feature tracking (WCAG compliance) |\n\n---\n\n## 🤝 How to Contribute to FSR\n\nWe welcome contributions to expand and improve the Fullstory Skills Repository! Here's how to add or update skills:\n\n### Adding a New Skill\n\n1. **Choose the right category:**\n   - `core/` - For specific Fullstory API implementations\n   - `meta/` - For strategic guidance and decision frameworks\n   - `industry/` - For industry-specific semantic decoration guidance\n   - `framework/` - For frontend framework integration patterns\n\n2. **Create the folder and file:**\n   ```\n   skills/[category]/[skill-name]/SKILL.md\n   ```\n\n3. **Use the standard skill template:**\n\n```yaml\n---\nname: fullstory-your-skill-name\nversion: v2\ndescription: Clear, comprehensive description of what this skill covers and when to use it.\nrelated_skills:\n  - fullstory-related-skill-1\n  - fullstory-related-skill-2\n---\n\n# Fullstory [Skill Title]\n\n\u003e ⚠️ **LEGAL DISCLAIMER** (for industry skills only): This guidance is for educational purposes only...\n\n## Overview\n\nBrief explanation of what this skill covers and when developers should use it.\n\n## Core Concepts\n\nKey principles with visual diagrams (use ASCII art for compatibility):\n\n```\n┌─────────────────────────────┐\n│  Visual concept diagrams    │\n│  help Agent understand     │\n└─────────────────────────────┘\n```\n\n## API Reference\n\n### Basic Syntax\n\n\\`\\`\\`javascript\nFS('methodName', {\n  param1: 'value',\n  param2: 'value'\n});\n\\`\\`\\`\n\n### Parameters\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `param1` | string | **Yes** | What it does |\n| `param2` | object | No | Optional parameter |\n\n---\n\n## ✅ GOOD IMPLEMENTATION EXAMPLES\n\n### Example 1: [Descriptive Title]\n\n\\`\\`\\`javascript\n// GOOD: Explanation of why this is good\n[code example]\n\\`\\`\\`\n\n**Why this is good:**\n- ✅ Reason 1\n- ✅ Reason 2\n\n---\n\n## ❌ BAD IMPLEMENTATION EXAMPLES\n\n### Example 1: [What's Wrong]\n\n\\`\\`\\`javascript\n// BAD: Explanation of what's wrong\n[bad code example]\n\\`\\`\\`\n\n**Why this is bad:**\n- ❌ Problem 1\n- ❌ Problem 2\n\n**CORRECTED VERSION:**\n\\`\\`\\`javascript\n[corrected code]\n\\`\\`\\`\n\n---\n\n## TROUBLESHOOTING\n\n### [Common Issue Title]\n\n**Symptom**: What the developer sees\n**Common Causes**: \n1. Cause 1\n2. Cause 2\n\n**Solutions**:\n- ✅ Solution 1\n- ✅ Solution 2\n\n---\n\n## KEY TAKEAWAYS FOR AGENT\n\nWhen helping developers with [this topic]:\n\n1. **Always emphasize**:\n   - Key point 1\n   - Key point 2\n\n2. **Common mistakes to watch for**:\n   - Mistake 1\n   - Mistake 2\n\n3. **Questions to ask developers**:\n   - Question 1?\n   - Question 2?\n\n---\n\n## REFERENCE LINKS\n\n- **Official Docs**: https://developer.fullstory.com/...\n- **Help Center**: https://help.fullstory.com/...\n\n---\n\n*This skill document was created to help Agent understand and guide developers...*\n```\n\n### Contribution Checklist\n\nBefore submitting your skill:\n\n- [ ] YAML front matter includes `name`, `version: v2`, `description`, and `related_skills`\n- [ ] Overview section clearly explains the skill's purpose\n- [ ] Core Concepts include visual diagrams where helpful\n- [ ] API Reference matches [official Fullstory documentation](https://developer.fullstory.com/)\n- [ ] At least 3 GOOD examples with explanations\n- [ ] At least 3 BAD examples with corrections\n- [ ] Troubleshooting section covers common issues\n- [ ] \"Key Takeaways for Agent\" section summarizes guidance\n- [ ] Reference Links point to valid, official URLs\n- [ ] Cross-references added to related skills (update their `related_skills` too!)\n- [ ] Legal disclaimer included (for industry skills)\n- [ ] Build tool warnings included (for CSS class-based features)\n\n### Updating Existing Skills\n\n1. **Always verify API syntax** against official documentation first\n2. **Add examples** for new use cases or patterns\n3. **Update `related_skills`** if new relevant skills exist\n4. **Check reference links** are still valid\n5. **Test examples** to ensure they work correctly\n\n### Style Guidelines\n\n- Use clear, descriptive section headers\n- Include both code AND explanations\n- Use tables for parameter documentation\n- Use ASCII diagrams for visual concepts\n- Use ✅/❌ emojis in good/bad examples\n- Keep examples realistic and industry-relevant\n- Avoid hallucinating API features - verify everything!\n\n---\n\n## 📚 Skill Categories\n\n### Core API Skills (12 skills × 3 files = 36 files)\n\nTechnical implementation guides for each Fullstory API. **Each skill has three files:**\n\n| File | Content |\n|------|---------|\n| `SKILL.md` | Core concepts, API parameters, best practices (platform-agnostic) |\n| `SKILL-WEB.md` | JavaScript/TypeScript implementation |\n| `SKILL-MOBILE.md` | iOS, Android, Flutter, React Native implementation |\n\n| Skill | Purpose | Platforms |\n|-------|---------|-----------|\n| `fullstory-identify-users` | Link sessions to users | Web + Mobile |\n| `fullstory-anonymize-users` | End identified sessions | Web + Mobile |\n| `fullstory-user-properties` | Set user attributes | Web + Mobile |\n| `fullstory-page-properties` | Set page/screen context | Web + Mobile |\n| `fullstory-element-properties` | Capture interaction-level data | Web + Mobile |\n| `fullstory-analytics-events` | Track discrete business events | Web + Mobile |\n| `fullstory-privacy-controls` | Implement masking/exclusion | Web + Mobile |\n| `fullstory-user-consent` | GDPR/CCPA consent management | Web + Mobile |\n| `fullstory-capture-control` | Pause/resume recording | Web + Mobile |\n| `fullstory-observe-callbacks` | Session URL and lifecycle events | Web only* |\n| `fullstory-logging` | Error and debug logging | Web + Mobile |\n| `fullstory-async-methods` | Promise-based API patterns | Web only* |\n\n*Web-only APIs have mobile equivalent patterns documented in their `SKILL-MOBILE.md` files.\n\n### Meta/Strategy Skills (4)\n\nStrategic guidance for implementation planning. Meta skills **orchestrate** which core skills to use and in what order.\n\n| Skill | Purpose |\n|-------|---------|\n| `fullstory-getting-started` | **THE definitive entry point** — skill architecture, platform routing, SDK installation links |\n| `fullstory-privacy-strategy` | Decision framework for data privacy |\n| `universal-data-scoping-and-decoration` | Where to put data (user vs page vs element vs event) |\n| `mobile-instrumentation-orchestrator` | Sequencing logic for mobile SDK implementation (Privacy → Identity → Navigation → Events) |\n\n### Industry-Specific Skills (7)\n\nTailored guidance for specific verticals:\n\n| Industry | Skill | Key Focus Areas |\n|----------|-------|-----------------|\n| **Banking \u0026 Financial Services** | `fullstory-banking` | PCI DSS, GLBA, SOX; transaction masking; MFA flows |\n| **E-commerce \u0026 Retail** | `fullstory-ecommerce` | Conversion funnels; cart abandonment; product tracking |\n| **Gaming** | `fullstory-gaming` | Fraud detection; responsible gaming compliance; game iframe decoration; KYC/AML |\n| **Healthcare** | `fullstory-healthcare` | HIPAA; PHI exclusion; BAA requirements |\n| **B2B SaaS** | `fullstory-saas` | Feature adoption; onboarding; churn prediction |\n| **Travel \u0026 Hospitality** | `fullstory-travel` | Booking funnels; ancillaries; passport/ID exclusion |\n| **Media \u0026 Entertainment** | `fullstory-media-entertainment` | Video tracking; subscriptions; COPPA compliance |\n\n### Framework Integration Skills (2 skills × 3 files = 6 files)\n\n| Skill | Purpose |\n|-------|---------|\n| `fullstory-stable-selectors` | Universal pattern for stable identifiers across ALL platforms |\n| `fullstory-test-automation` | Test script generation leveraging Fullstory decoration |\n\n**File Structure (same three-file pattern as core skills):**\n| File | Content |\n|------|---------|\n| `SKILL.md` | Core concepts (platform-agnostic) |\n| `SKILL-WEB.md` | Web implementation (JavaScript/TypeScript) |\n| `SKILL-MOBILE.md` | Mobile implementation (iOS, Android, Flutter, React Native) |\n\n\u003e **Why Stable Selectors?** Modern build tools generate dynamic identifiers that change every build—CSS class hashes on web, auto-generated view IDs on mobile. Stable semantic identifiers ensure Fullstory searches, defined elements, and click maps work reliably across deployments.\n\n#### CUA Readiness (Computer User Agents)\n\nThe stable selectors skill prepares your application for AI-driven automation:\n\n```\n┌─────────────────────────────────────────────────────────────────┐\n│  Without Stable Selectors (Brittle)                              │\n│  Web: \u003cbutton class=\"sc-abc123 xyz789\"\u003e                          │\n│  iOS: UIButton at 0x7f8b4c0123a0                                │\n│  → Identifiers change every build/launch, AI navigation breaks  │\n├─────────────────────────────────────────────────────────────────┤\n│  With Stable Selectors (Resilient)                               │\n│  Web: \u003cbutton data-component=\"button\" data-id=\"pay\"\u003e            │\n│  iOS: accessibilityIdentifier = \"button.pay\"                    │\n│  → Semantic, stable, machine-readable forever                   │\n└─────────────────────────────────────────────────────────────────┘\n```\n\n#### Platform Coverage\n\n| Platform | Stable Identifier Mechanism |\n|----------|----------------------------|\n| React / Next.js / Vue / Angular | `data-component`, `data-id`, `data-section`, `data-position`, `data-state` |\n| Svelte / Solid / Astro | `data-component`, `data-id`, `data-section`, `data-position`, `data-state` |\n| iOS (Swift / SwiftUI) | `accessibilityIdentifier` + `FS.setAttribute` |\n| Android (Kotlin / Compose) | `contentDescription`, `testTag` + `FS.setAttribute` |\n| React Native | `testID` + `FS.setAttribute` |\n| Flutter | `Key`, `Semantics` + `FS.setAttribute` |\n\nNo external plugins required — use native platform mechanisms with the Fullstory Data Attributes Guide naming conventions.\n\n---\n\n## 🏭 Industry Privacy Comparison\n\nDifferent industries have vastly different requirements for Fullstory implementation:\n\n### Private by Default Recommendation\n\nFullstory offers a **Private by Default mode** that inverts the capture default—everything is masked unless explicitly unmasked. This is the recommended approach for high-sensitivity industries:\n\n| Industry | Private by Default? | Rationale |\n|----------|---------------------|-----------|\n| **Banking** | ✅ **Highly recommended** | Financial data, regulatory requirements |\n| **Healthcare** | ✅ **Required** | HIPAA PHI protection |\n| **SaaS (Enterprise)** | ⚠️ **Recommended** | Customer data in multi-tenant apps |\n| **Gaming** | ⚠️ **Consider** | Financial + responsible gaming data |\n| **Travel** | ⚠️ **Consider** | Passport, payment data |\n| **E-commerce** | ❌ Usually not needed | Product data should be visible |\n| **Media** | ❌ Usually not needed | Content data is the analytics |\n\n\u003e **Enable Private by Default**: Contact [Fullstory Support](https://help.fullstory.com/hc/en-us/requests/new) or select during account setup.\n\u003e \n\u003e **Reference**: [Fullstory Private by Default](https://help.fullstory.com/hc/en-us/articles/360044349073-Fullstory-Private-by-Default)\n\n### Privacy Defaults by Industry\n\n| Industry | Default Privacy Mode | Financial Data | User Content | Conversion Tracking | Primary Concern |\n|----------|---------------------|----------------|--------------|---------------------|-----------------|\n| **Banking** | Exclude | Exclude (ranges only) | Exclude | Limited | Regulatory (PCI, GLBA) |\n| **E-commerce** | Unmask | Capture (orders) | Mostly capture | Rich | Conversion optimization |\n| **Gaming** | Mixed | Exclude (ranges only) | Exclude | Careful | Responsible gaming |\n| **Healthcare** | Exclude | Exclude | Exclude | Very limited | HIPAA compliance |\n| **SaaS** | Unmask | Usually OK | Mask/Consider | Rich | Feature adoption |\n| **Travel** | Unmask | Capture (bookings) | Mask | Rich | Booking optimization |\n| **Media** | Unmask | N/A | Capture | Rich | Engagement metrics |\n\n### What to Capture by Industry\n\n| Data Type | Banking | E-commerce | Gaming | Healthcare | SaaS | Travel | Media |\n|-----------|---------|------------|----------|------------|------|--------|-------|\n| User names | ❌ | ⚠️ Mask | ⚠️ Mask | ❌ | ⚠️ Mask | ⚠️ Mask | ⚠️ Mask |\n| Email | ❌ | ⚠️ Hash | ⚠️ Hash | ❌ | ⚠️ Consider | ⚠️ Mask | ⚠️ Consider |\n| Product/content names | N/A | ✅ | ✅ | N/A | ✅ | ✅ | ✅ |\n| Prices/amounts | ❌ Ranges | ✅ | ❌ Ranges | ❌ | ✅ | ✅ | ✅ |\n| Account balance | ❌ | N/A | ❌ | N/A | N/A | N/A | N/A |\n| Transaction details | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ |\n| Search queries | ⚠️ | ✅ | ⚠️ | ❌ | ✅ | ✅ | ✅ |\n| Payment cards | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |\n| Government IDs | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |\n\n**Legend**: ✅ = Capture, ⚠️ = Consider/Mask, ❌ = Exclude\n\n### Key Regulatory Requirements\n\n| Industry | Primary Regulations | Fullstory Requirements |\n|----------|--------------------|-----------------------|\n| **Banking** | PCI DSS, GLBA, SOX | Exclude all financial data; use ranges |\n| **E-commerce** | PCI DSS, CCPA, GDPR | Exclude payment fields; consent for EU |\n| **Gaming** | Gaming licenses, AML/KYC | Never analyze gaming patterns; exclude amounts |\n| **Healthcare** | HIPAA, HITECH | BAA required; exclude ALL PHI; masking insufficient |\n| **SaaS** | SOC 2, GDPR | Enterprise privacy options; consent for EU |\n| **Travel** | PCI DSS, GDPR | Exclude passport/ID numbers; payment exclusion |\n| **Media** | COPPA, GDPR | Never track children's profiles; consent |\n\n---\n\n## 📁 Repository Structure\n\n```\nskills/\n├── README.md                          # This file\n│\n├── core/                              # 12 Core API Skills (36 files)\n│   ├── fullstory-analytics-events/\n│   │   ├── SKILL.md                   # Core concepts (platform-agnostic)\n│   │   ├── SKILL-WEB.md               # JavaScript/TypeScript implementation\n│   │   └── SKILL-MOBILE.md            # iOS, Android, Flutter, React Native\n│   ├── fullstory-anonymize-users/\n│   │   ├── SKILL.md\n│   │   ├── SKILL-WEB.md\n│   │   └── SKILL-MOBILE.md\n│   ├── fullstory-async-methods/       # (web-only API)\n│   ├── fullstory-capture-control/\n│   ├── fullstory-element-properties/\n│   ├── fullstory-identify-users/\n│   ├── fullstory-logging/\n│   ├── fullstory-observe-callbacks/   # (web-only API)\n│   ├── fullstory-page-properties/\n│   ├── fullstory-privacy-controls/\n│   ├── fullstory-user-consent/\n│   └── fullstory-user-properties/\n│\n├── meta/                              # 4 Meta/Strategy Skills\n│   ├── fullstory-getting-started/\n│   ├── fullstory-privacy-strategy/\n│   ├── mobile-instrumentation-orchestrator/  # Mobile SDK sequencing\n│   └── universal-data-scoping-and-decoration/\n│\n├── industry/                          # 7 Industry-Specific Skills\n│   ├── fullstory-banking/\n│   ├── fullstory-ecommerce/\n│   ├── fullstory-gaming/\n│   ├── fullstory-healthcare/\n│   ├── fullstory-media-entertainment/\n│   ├── fullstory-saas/\n│   └── fullstory-travel/\n│\n└── framework/                         # 2 Framework Integration Skills (6 files)\n    ├── fullstory-stable-selectors/\n    │   ├── SKILL.md                   # Core concepts (platform-agnostic)\n    │   ├── SKILL-WEB.md               # Web: data-* attributes\n    │   └── SKILL-MOBILE.md            # Mobile: accessibilityIdentifier, testID, Key\n    └── fullstory-test-automation/\n        ├── SKILL.md                   # Core concepts (platform-agnostic)\n        ├── SKILL-WEB.md               # Web test generation\n        └── SKILL-MOBILE.md            # Mobile test generation\n```\n\n---\n\n## 📖 Skill Format\n\n### Platform-Split Structure (Core Skills)\n\nCore skills use a **three-file structure** for platform-specific implementation:\n\n```\nfullstory-[skill-name]/\n├── SKILL.md           # Core concepts (platform-agnostic)\n├── SKILL-WEB.md       # Web implementation (JavaScript/TypeScript)\n└── SKILL-MOBILE.md    # Mobile implementation (iOS, Android, Flutter, RN)\n```\n\n**SKILL.md Frontmatter:**\n```yaml\n---\nname: fullstory-skill-name\nversion: v3\ndescription: Core concepts for...\nplatforms: [web, ios, android, flutter, react-native]\nimplementation_files: [SKILL-WEB.md, SKILL-MOBILE.md]\nrelated_skills:\n  - other-skill-1\n---\n```\n\n**SKILL-WEB.md / SKILL-MOBILE.md Frontmatter:**\n```yaml\n---\nname: fullstory-skill-name-web  # or -mobile\nversion: v3\nplatform: web  # or platforms: [ios, android, flutter, react-native]\nparent_skill: fullstory-skill-name\nrelated_skills:\n  - other-skill-1\n---\n```\n\n### Standard Sections\n\n**SKILL.md (Core):**\n1. **Overview** - What the API/concept does\n2. **Core Concepts** - Key principles (platform-agnostic)\n3. **API Parameters** - Parameters, types, limits\n4. **Best Practices** - Universal guidance\n5. **Troubleshooting** - Common issues\n6. **Key Takeaways for Agent** - Platform routing logic\n7. **Reference Links** - All platform docs\n\n**SKILL-WEB.md / SKILL-MOBILE.md (Implementation):**\n1. **Navigation blockquote** - Links to sibling files\n2. **API Reference** - Platform-specific syntax\n3. **✅ GOOD Examples** - Correct implementations\n4. **❌ BAD Examples** - Anti-patterns with corrections\n5. **Common Patterns** - Framework-specific (React, Vue, etc. OR iOS, Android, etc.)\n6. **Troubleshooting** - Platform-specific issues\n\n---\n\n## 🚀 Getting Started\n\n### The Golden Rule: SKILL.md First\n\nFor any core skill, **always read SKILL.md first** for concepts, then the platform-specific file for implementation:\n- `SKILL.md` → Core concepts, API parameters, best practices\n- `SKILL-WEB.md` → JavaScript/TypeScript implementation\n- `SKILL-MOBILE.md` → iOS, Android, Flutter, React Native implementation\n\n### Where to Start\n\n1. **New to Fullstory?** Start with `meta/fullstory-getting-started/SKILL.md`\n2. **Know your industry?** Jump to the relevant `industry/` skill\n3. **Need specific API help?** Read core skill's `SKILL.md` first, then platform file\n4. **Planning privacy?** See `meta/fullstory-privacy-strategy/SKILL.md`\n5. **Building mobile?** See `meta/mobile-instrumentation-orchestrator/SKILL.md` for sequencing\n\n### Quick Decision Tree\n\n```\nWhat do you need help with?\n│\n├─ \"I'm just getting started\"\n│  └─ → meta/fullstory-getting-started/SKILL.md (THE entry point)\n│\n├─ \"Which API should I use?\"\n│  └─ → meta/universal-data-scoping-and-decoration/SKILL.md\n│\n├─ \"How do I identify users?\"\n│  └─ → core/fullstory-identify-users/SKILL.md (concepts first)\n│     └─ Then → SKILL-WEB.md or SKILL-MOBILE.md (implementation)\n│\n├─ \"What should I mask vs exclude?\"\n│  └─ → core/fullstory-privacy-controls/SKILL.md (concepts first)\n│     └─ Then → SKILL-WEB.md or SKILL-MOBILE.md (implementation)\n│\n├─ \"I work in [industry]\"\n│  └─ → industry/fullstory-[industry]/SKILL.md\n│\n├─ \"What order should I implement mobile SDK?\"\n│  └─ → meta/mobile-instrumentation-orchestrator/SKILL.md\n│     (sequences which core SKILL.md files to read)\n│\n├─ \"My CSS class names keep changing\" (Web)\n│  └─ → framework/fullstory-stable-selectors/SKILL.md → SKILL-WEB.md\n│\n└─ \"My view IDs are unstable\" (Mobile)\n   └─ → framework/fullstory-stable-selectors/SKILL.md → SKILL-MOBILE.md\n```\n\n---\n\n## 🔗 Cross-References\n\nSkills are interconnected via the `related_skills` field in their YAML front matter. This enables Agent to:\n\n- Navigate between related concepts\n- Suggest additional relevant skills\n- Build comprehensive implementation guidance\n\nExample connections:\n- `fullstory-identify-users` → `fullstory-anonymize-users`, `fullstory-privacy-strategy`\n- `fullstory-privacy-controls` → `fullstory-banking`, `fullstory-healthcare`\n- `fullstory-analytics-events` → `fullstory-ecommerce`, `fullstory-saas`\n\n---\n\n## 📊 Skill Statistics\n\n| Category | Skills | Files | Focus |\n|----------|--------|-------|-------|\n| Core API | 12 | 36 | Technical implementation (SKILL.md + SKILL-WEB.md + SKILL-MOBILE.md) |\n| Meta/Strategy | 4 | 4 | Planning, architecture, orchestration |\n| Industry | 7 | 7 | Vertical-specific guidance |\n| Framework | 2 | 6 | Stable selectors + test automation (SKILL.md + SKILL-WEB.md + SKILL-MOBILE.md) |\n| **Total** | **25** | **53** | Complete Fullstory coverage across all platforms |\n\n---\n\n## ⚠️ Important Notes\n\n### API Verification\n\nThis repository documents Fullstory Browser API **v2**. Always verify API syntax against the [official documentation](https://developer.fullstory.com/browser/getting-started/) as the API may evolve.\n\n**Official Documentation Links:**\n- [Identify Users](https://developer.fullstory.com/browser/identification/identify-users/)\n- [Anonymize Users](https://developer.fullstory.com/browser/identification/anonymize-users/)\n- [Set User Properties](https://developer.fullstory.com/browser/identification/set-user-properties/)\n- [Analytics Events](https://developer.fullstory.com/browser/capture-events/analytics-events/)\n- [Set Page Properties](https://developer.fullstory.com/browser/set-page-properties/)\n- [Capture Data (shutdown/restart)](https://developer.fullstory.com/browser/fullcapture/capture-data/)\n- [User Consent](https://developer.fullstory.com/browser/fullcapture/user-consent/)\n- [Callbacks and Delegates](https://developer.fullstory.com/browser/fullcapture/callbacks-and-delegates/)\n- [Logging](https://developer.fullstory.com/browser/fullcapture/logging/)\n- [Asynchronous Methods](https://developer.fullstory.com/browser/asynchronous-methods/)\n- [Privacy (Help Center)](https://help.fullstory.com/hc/en-us/articles/360020623574)\n\n### Legal Disclaimers\n\nAll industry-specific skills contain regulatory guidance for educational purposes only. This guidance **does not constitute legal advice**. Regulations (PCI DSS, HIPAA, GDPR, GLBA, etc.) are:\n- Complex and nuanced\n- Jurisdiction-specific\n- Subject to change\n\n**Always consult with your legal and compliance teams** before implementing data capture solutions.\n\n### Build Tool Warning\n\nModern CSS build tools (Tailwind, PostCSS purge, CSS Modules) may remove \"unused\" classes. Privacy classes like `.fs-exclude`, `.fs-mask`, `.fs-unmask` must be:\n1. Safelisted in your build configuration\n2. Verified in production HTML\n3. Tested in Fullstory to confirm they work\n\n### Security Notes\n\n- **Client-side hashing** is NOT a security control - it's a privacy measure only\n- CSS classes can be inspected by users\n- Always use server-side processing for true security requirements\n\n---\n\n## 📜 License\n\nInternal use only - Fullstory Solutions Engineering\n\n---\n\n*FSR - Enabling expert-level Fullstory semantic decoration guidance through Agent Skills*\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffullstorydev%2Ffs-skills","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffullstorydev%2Ffs-skills","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffullstorydev%2Ffs-skills/lists"}