Implement new CTA login attribution sources using the login-cta-attribution-skill Skill.
Implements new CTA login attribution sources by following an 8-step checklist for Slack, Teams, or Email platforms.
/plugin marketplace add diversioteam/agent-skills-marketplace/plugin install login-cta-attribution-skill@diversiotechRun your login-cta-attribution-skill Skill in implement mode.
Arguments:
[platform] – Target platform: slack, teams, or email[action] – CTA action name (e.g., survey_complete, weekly_digest)Focus on:
LoginSourceDetailChoices enum values (if new action) WITH from_raw_to_enum().CTA_SOURCE_* constants using Final[str] and enum composition.ALLOWED_CTA_SOURCES and VALID_DETAILS_BY_SOURCE.build_stable_slack_cta_url() / build_stable_teams_cta_url()
with button params baked in (for single-button CTAs like Home Tab).update_slack_cta_url_with_button_info() /
update_teams_cta_url_with_button_info() to append button params
to a base URL (for multi-button contexts like Digests).build_login_magic_link_for_user() takes enum types for
login_cta_source and login_cta_source_detail, not strings.build_stable_slack_cta_url() takes SlackTabChoices and SlackButtonChoices
enum types directly.build_source_attribution_metadata() is called in magic link creation..label matches actual UI button text.ty -> pyright -> mypy.After implementation:
/backend-atomic-commit:pre-commit to validate changed files
(full pre-commit suite with auto-fixes)..bin/ruff check --fix + .bin/ruff format, then active type gate:
.bin/ty check (or .bin/pyright or .bin/mypy), then
.bin/django check (or python manage.py check).pytest optimo_core/tests/test_login_attribution*.py
pytest optimo_core/tests/test_login_attribution_integration.py
pytest optimo_integrations/tests/slack/test_home_cta.py
pytest optimo_integrations/tests/test_magic_links_helpers.py
parse_cta_source() returns expected result for new source.