{"data":{"skill":{"slug":"sickn33-airflow-dag-patterns","name":"airflow-dag-patterns","icon":"📦","repo":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/airflow-dag-patterns","status":"approved","author":"sickn33","authorVersion":null,"skillstoreRevision":2},"audit":{"id":"2f1d1fcc-b63e-426c-9c03-1178ee1465c1","skill_id":"22ac9bbc-b060-4f0b-95f5-0b67b0ae55e2","version":5,"content_hash":"v3:ebdfe608f5de2b66ff37ab4af12af8ac4f5e8006:94a41e7557ed0038de304d942691a6f432f6a29b82dc096e7c1f265b74fc332c:4b20de94d1a6ec73ad3bb5014ec985143032f0a9cf9e57a080479dc44397abee:736b696c6c732f7369636b6e33332f616972666c6f772d6461672d7061747465726e73:91ec5da85635b54d9ade1616c34b2e43","risk_level":"safe","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"All ten static alerts are false positives caused by documentation examples, ordinary Python syntax, or Markdown backticks. No malicious intent, prompt injection, credential access, or data exfiltration was found.","remediation":[],"risk_factor_evidence":[{"factor":"scripts","evidence":[{"file":"resources/implementation-playbook.md","line_end":213,"line_start":213}]},{"factor":"network","evidence":[{"file":"resources/implementation-playbook.md","line_end":318,"line_start":318},{"file":"resources/implementation-playbook.md","line_end":318,"line_start":318}]},{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":35,"line_start":35},{"file":"SKILL.md","line_end":44,"line_start":44}]}],"critical_findings":[],"high_findings":[],"medium_findings":[],"low_findings":[],"dangerous_patterns":[],"files_scanned":2,"total_lines":560,"audit_model":"codex","audited_at":"2026-07-23T18:54:45.767+00:00","created_at":"2026-07-26T01:17:37.959877+00:00","static_findings":[{"id":"scripts:resources/implementation-playbook.md:213:python-globals-manipulation","file":"resources/implementation-playbook.md","pattern":"Python globals() manipulation","snippet":"globals()[f\"dag_{config['name']}\"] = create_dag(config)","category":"scripts","line_end":213,"severity":"high","line_start":213},{"id":"network:resources/implementation-playbook.md:318:python-http-libraries","file":"resources/implementation-playbook.md","pattern":"Python HTTP libraries","snippet":"response = requests.get('https://api.example.com/health')","category":"network","line_end":318,"severity":"low","line_start":318},{"id":"network:resources/implementation-playbook.md:318:hardcoded-url","file":"resources/implementation-playbook.md","pattern":"Hardcoded URL","snippet":"response = requests.get('https://api.example.com/health')","category":"network","line_end":318,"severity":"low","line_start":318},{"id":"blocker:resources/implementation-playbook.md:163:system-reconnaissance","file":"resources/implementation-playbook.md","pattern":"System reconnaissance","snippet":"dag_id = f\"etl_{config['name']}\"","category":"blocker","line_end":163,"severity":"low","line_start":163},{"id":"blocker:resources/implementation-playbook.md:445:system-reconnaissance","file":"resources/implementation-playbook.md","pattern":"System reconnaissance","snippet":"assert 'start' in [t.task_id for t in extract_task.upstream_list]","category":"blocker","line_end":445,"severity":"low","line_start":445},{"id":"blocker:resources/implementation-playbook.md:446:system-reconnaissance","file":"resources/implementation-playbook.md","pattern":"System reconnaissance","snippet":"assert 'end' in [t.task_id for t in extract_task.downstream_list]","category":"blocker","line_end":446,"severity":"low","line_start":446},{"id":"blocker:resources/implementation-playbook.md:501:network-reconnaissance","file":"resources/implementation-playbook.md","pattern":"Network reconnaissance","snippet":"- **Don't use global state** - Tasks should be stateless","category":"blocker","line_end":502,"severity":"low","line_start":501},{"id":"external_commands:SKILL.md:35:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Refer to `resources/implementation-playbook.md` for detailed patterns, checklists, and templates.","category":"external_commands","line_end":35,"severity":"medium","line_start":35},{"id":"external_commands:SKILL.md:44:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `resources/implementation-playbook.md` for detailed patterns, checklists, and templates.","category":"external_commands","line_end":44,"severity":"medium","line_start":44},{"id":"blocker:SKILL.md:39:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"- Avoid changing production DAG schedules without approval.","category":"blocker","line_end":39,"severity":"low","line_start":39}],"finding_verdicts":[{"id":"scripts:resources/implementation-playbook.md:213:python-globals-manipulation","reason":"This is the standard Airflow dynamic DAG registration pattern, using names from a hardcoded configuration list. It does not execute arbitrary code or modify sensitive interpreter state.","verdict":"false_positive","confidence":0.98},{"id":"network:resources/implementation-playbook.md:318:python-http-libraries","reason":"The request is a documented API health sensor example using the reserved example.com domain. It sends no credentials or local data and shows no exfiltration intent.","verdict":"false_positive","confidence":0.96},{"id":"network:resources/implementation-playbook.md:318:hardcoded-url","reason":"The hardcoded address is a placeholder on the reserved example.com domain inside a documentation sample. It is not an operational endpoint or malicious destination.","verdict":"false_positive","confidence":0.97},{"id":"blocker:resources/implementation-playbook.md:163:system-reconnaissance","reason":"This line formats an Airflow DAG identifier from a local configuration value. It does not inspect the host, processes, files, environment, or system configuration.","verdict":"false_positive","confidence":0.99},{"id":"blocker:resources/implementation-playbook.md:445:system-reconnaissance","reason":"This is a unit-test assertion over an in-memory Airflow task dependency list. It performs no system discovery or access outside the test DAG.","verdict":"false_positive","confidence":0.99},{"id":"blocker:resources/implementation-playbook.md:446:system-reconnaissance","reason":"This is a unit-test assertion over an in-memory Airflow task dependency list. It performs no system discovery or access outside the test DAG.","verdict":"false_positive","confidence":0.99},{"id":"blocker:resources/implementation-playbook.md:501:network-reconnaissance","reason":"The line is prose advising authors not to use global task state. It contains no network operation, host enumeration, or reconnaissance instruction.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:35:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting around a relative resource path. They do not invoke a shell, Ruby interpreter, or external command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:44:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting around a relative resource path. They do not invoke a shell, Ruby interpreter, or external command.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:39:system-reconnaissance","reason":"This is a safety instruction requiring approval before production schedule changes. It does not gather system information or direct reconnaissance.","verdict":"false_positive","confidence":0.99}],"semantic_findings":[],"subject_marketplace_commit_sha":"ebdfe608f5de2b66ff37ab4af12af8ac4f5e8006","subject_content_hash":"94a41e7557ed0038de304d942691a6f432f6a29b82dc096e7c1f265b74fc332c","subject_tree_hash":"4b20de94d1a6ec73ad3bb5014ec985143032f0a9cf9e57a080479dc44397abee","subject_plugin_path":"skills/sickn33/airflow-dag-patterns","audit_payload_hash":"91ec5da85635b54d9ade1616c34b2e43","confirmed_risk_level":"safe","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"ebdfe608f5de2b66ff37ab4af12af8ac4f5e8006","contentHash":"94a41e7557ed0038de304d942691a6f432f6a29b82dc096e7c1f265b74fc332c","treeHash":"4b20de94d1a6ec73ad3bb5014ec985143032f0a9cf9e57a080479dc44397abee","pluginPath":"skills/sickn33/airflow-dag-patterns","auditPayloadHash":"91ec5da85635b54d9ade1616c34b2e43"},"scannerVersion":"3.0.0","policyVersion":"skillstore-security-audit-policy-v1"},"auditTranslation":null,"localization":{"requestedLocale":"en","contentLocale":"en","availableLocales":["en"],"fallbackToEnglish":false},"attestation":{"availability":"issued","url":"/api/skills/sickn33-airflow-dag-patterns/audits/5/attestation","status":"active"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"safe","confirmedFindingCount":0,"capabilityReviewCount":0,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"allowed","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"active","verificationState":"not_verified"},"isLatest":true}}