Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .claude/agents/ORCHESTRATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -346,7 +346,7 @@ py-audit-bot (baseline, scope=seed + enricher pipelines)
| `.claude/agents/py-*.md` | Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ субагСнтов для Claude Code CLI |
| `.claude/rules/ai-selfreview-rules.md` | ΠŸΡ€Π°Π²ΠΈΠ»Π° автоматичСской самопровСрки ΠΊΠΎΠ΄Π° |
| `docs/00-project/RULES.md` | АрхитСктурныС ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° |
| `docs/02-architecture/decisions/` | ADR-001..ADR-040 |
| `docs/02-architecture/decisions/` | ADR-001..ADR-050 |
| `docs/00-project/glossary.md` | ВСрминология |
| `tests/architecture/` | АвтоматичСскиС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² |
| `docs/00-project/ai/agents/scripts/py-config-bot-1.py` | АвтоматичСская ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΎΠ² |
Expand Down Expand Up @@ -395,7 +395,7 @@ py-audit-bot (baseline, scope=seed + enricher pipelines)
| **ChEMBL** | βœ… Schema validation | β€” | βœ… Golden data, contracts | βœ… Field reference | βœ… Error repro | β€” |
| **PubMed** | β€” | βœ… Coverage eval | βœ… Test data | β€” | β€” | βœ… Citations |
| **bioRxiv** | β€” | βœ… Trends, research | βœ… Preprint test data | β€” | β€” | βœ… Context |
| **Open Targets** | βœ… Target validation | βœ… Data availability | β€” | βœ… Join key validation | β€” | β€” |
| **OpenAlex** | βœ… Target validation | βœ… Data availability | β€” | βœ… Join key validation | β€” | β€” |
| **Mermaid Chart** | βœ… Arch diagrams | β€” | β€” | β€” | β€” | βœ… All diagrams |
| **BioRender** | β€” | β€” | β€” | β€” | β€” | βœ… Scientific figs |

Expand Down
8 changes: 4 additions & 4 deletions .claude/agents/py-audit-bot.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,13 @@ model: opus
- НазначСниС: ETL-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для Π΄Π°Π½Π½Ρ‹Ρ… биоактивности ΠΈΠ· Π½Π°ΡƒΡ‡Π½Ρ‹Ρ… Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…
- АрхитСктура: Hexagonal (Ports & Adapters) + Medallion (Bronzeβ†’Silverβ†’Gold) + DDD
- Deployment: Local-Only (ADR-010) β€” Π±Π΅Π· Docker/Redis
- Π’Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС: 40 ADR (ADR-001..ADR-040), всС Accepted
- Π’Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС: 50 ADR (ADR-001..ADR-050), всС Accepted

**ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹:**
- Domain Ports: `src/bioetl/domain/ports/`
- Adapters: `src/bioetl/infrastructure/adapters/{provider}/`
- Pipelines: `src/bioetl/application/pipelines/`
- Configs: `configs/pipelines/{provider}/{entity}.yaml`
- Configs: `configs/entities/{provider}/{entity}.yaml`
- ADR: `docs/02-architecture/decisions/`
- RULES.md: `docs/00-project/RULES.md`
- Self-review rules: `.claude/rules/ai-selfreview-rules.md`
Expand Down Expand Up @@ -333,11 +333,11 @@ code_review:
3. Π‘Ρ€Π°Π²Π½ΠΈΡ‚ΡŒ с domain entity ΠΈ Pandera schema
4. ΠŸΡ€ΠΈ расхоТдСнии β†’ finding `AUD-SCHEMA-*` с severity MUST

### Open Targets β€” валидация Ρ‚Π°Ρ€Π³Π΅Ρ‚ΠΎΠ²
### OpenAlex β€” валидация Ρ‚Π°Ρ€Π³Π΅Ρ‚ΠΎΠ²

| Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ | Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ | ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ | Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ |
|----------|------------|-----------|-----------|
| ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° target ID | `Open Targets:search_entities` | `query_strings=["EGFR"]` | Валидация ENSEMBL ID mapping |
| ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° target ID | `OpenAlex:search_entities` | `query_strings=["EGFR"]` | Валидация ENSEMBL ID mapping |

### Mermaid Chart β€” Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Π΅ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹

Expand Down
32 changes: 16 additions & 16 deletions .claude/agents/py-config-bot.md
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ configs/
### A. Pipeline config (standard)

```yaml
# configs/pipelines/{provider}/{entity}.yaml
# configs/entities/{provider}/{entity}.yaml
pipeline_name: {provider}_{entity}
provider: {provider}
entity_type: {entity}
Expand Down Expand Up @@ -153,7 +153,7 @@ sink:
### B. DQ rules (externalized)

```yaml
# configs/quality/entities/{provider}/{entity}.yaml
# configs/quality/{provider}/{entity}.yaml
entity: {entity}
provider: {provider}
version: "1.0.0"
Expand All @@ -176,7 +176,7 @@ rules:
### C. Filter rules (externalized)

```yaml
# configs/filters/entities/{provider}/{entity}.yaml
# configs/filters/{provider}/{entity}.yaml
entity: {entity}
provider: {provider}
version: "1.0.0"
Expand All @@ -190,7 +190,7 @@ gold_filters:
### D. Composite pipeline config

```yaml
# configs/pipelines/composite/{name}.yaml
# configs/entities/composite/{name}.yaml
composite:
name: composite_{entity}
version: "1.0.0"
Expand Down Expand Up @@ -220,27 +220,27 @@ composite:
```bash
python docs/00-project/ai/agents/scripts/py-config-bot-1.py -v
find configs/ -path "*/{provider}/*" -name "*.yaml" | sort
cat configs/pipelines/_defaults.yaml 2>/dev/null
cat configs/sources/{provider}.yaml 2>/dev/null
cat configs/entities/_defaults.yaml 2>/dev/null
cat configs/providers/{provider}.yaml 2>/dev/null
```

### ПослС создания/измСнСния

```bash
# YAML syntax
python -c "import yaml; yaml.safe_load(open('configs/pipelines/{provider}/{entity}.yaml'))"
python -c "import yaml; yaml.safe_load(open('configs/entities/{provider}/{entity}.yaml'))"

# Gap analysis β€” 0 critical
python docs/00-project/ai/agents/scripts/py-config-bot-1.py -v

# sort_by присутствуСт (ADR-014)
grep -A3 "sort_by" configs/pipelines/{provider}/{entity}.yaml
grep -A3 "sort_by" configs/entities/{provider}/{entity}.yaml

# НСт inline DQ-ΠΏΠΎΡ€ΠΎΠ³ΠΎΠ² (ADR-027)
grep -n "soft_fail_threshold\|hard_fail_threshold" configs/pipelines/{provider}/{entity}.yaml
grep -n "soft_fail_threshold\|hard_fail_threshold" configs/entities/{provider}/{entity}.yaml

# DQ externalized config сущСствуСт
test -f configs/quality/entities/{provider}/{entity}.yaml && echo "OK" || echo "MISSING"
test -f configs/quality/{provider}/{entity}.yaml && echo "OK" || echo "MISSING"
```

---
Expand Down Expand Up @@ -274,7 +274,7 @@ test -f configs/quality/entities/{provider}/{entity}.yaml && echo "OK" || echo "
#### ИзмСнСния
| Π€Π°ΠΉΠ» | ДСйствиС | ОписаниС |
|------|----------|----------|
| `configs/pipelines/chembl/activity.yaml` | created | Новый pipeline config |
| `configs/entities/chembl/activity.yaml` | created | Новый pipeline config |

#### ВСрификация
```bash
Expand Down Expand Up @@ -304,12 +304,12 @@ python docs/00-project/ai/agents/scripts/py-config-bot-1.py -v
| Поля Activity | `ChEMBL:get_bioactivity` | `molecule_chembl_id="CHEMBL25"` | Поля для activity config |
| Поля Target | `ChEMBL:target_search` | `gene_symbol="EGFR"` | Поля для target config |

### Open Targets β€” reference для composite config
### OpenAlex β€” reference для composite config

| Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ | Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ | ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ | Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ |
|----------|------------|-----------|-----------|
| Available fields | `Open Targets:get_open_targets_graphql_schema` | β€” | Поля для composite merge |
| Join key validation | `Open Targets:search_entities` | `query_strings=["EGFR"]` | ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° join keys |
| Available fields | `OpenAlex:get_open_targets_graphql_schema` | β€” | Поля для composite merge |
| Join key validation | `OpenAlex:search_entities` | `query_strings=["EGFR"]` | ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° join keys |
Comment on lines +307 to +312
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟑 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check if OpenAlex MCP tools are documented elsewhere with correct names
rg -n "OpenAlex:" .claude/agents/ --type md -C2

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 1584


🏁 Script executed:

#!/bin/bash
# Search for MCP tool definitions or schemas
find . -type f \( -name "*.json" -o -name "*.yaml" -o -name "*.yml" -o -name "*.ts" -o -name "*.js" -o -name "*.py" \) | head -50 | xargs grep -l "OpenAlex" 2>/dev/null || true

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 207


🏁 Script executed:

#!/bin/bash
# Look for any mcp server or tools definitions
fd -e json -e yaml -e yml | xargs grep -l "tools\|Tool" 2>/dev/null | head -20

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 1014


🏁 Script executed:

#!/bin/bash
# Check the actual structure and content of .claude directory
find .claude -type f | head -20

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 780


🏁 Script executed:

#!/bin/bash
# Search for tool definitions more broadly
rg "get_open_targets|query_open_targets|search_entities" --type-list | head -5
rg "get_open_targets|query_open_targets|search_entities" . -C3 | head -100

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 470


🏁 Script executed:

#!/bin/bash
# Search for tool implementations in Python files
rg "get_open_targets|query_open_targets|search_entities" . --type py -C3

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 63


🏁 Script executed:

#!/bin/bash
# Look for tools directory and OpenAlex implementations
find . -type d -name "*tool*" -o -name "*mcp*" 2>/dev/null | head -20
ls -la src/ 2>/dev/null | head -20

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 811


🏁 Script executed:

#!/bin/bash
# Check for OpenAlex in Python files more broadly
rg "OpenAlex" . --type py -C2 | head -100

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 8922


🏁 Script executed:

#!/bin/bash
# Check if there's an actual MCP tools manifest or tools.json
find . -name "*tools*" -type f | grep -E "\.(json|yaml|yml)$"

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 63


🏁 Script executed:

#!/bin/bash
# Check the src/tools directory structure and any tool definitions
ls -la src/tools/

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 1194


🏁 Script executed:

#!/bin/bash
# Search for any MCP tool registration or configuration
rg "tools" .claude/agents/ --type md -B2 -A2 | head -100

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 6379


🏁 Script executed:

#!/bin/bash
# Look for references to "open_targets" in the codebase
rg "open_targets" . --type-list 2>/dev/null || rg "open_targets" .

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 63


🏁 Script executed:

#!/bin/bash
# Check context around the OpenAlex references in py-config-bot.md
cat -n .claude/agents/py-config-bot.md | sed -n '300,320p'

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 1195


🏁 Script executed:

#!/bin/bash
# Check if these are actual tool definitions or just documentation references
# Look for any tool registry or manifest that might define these
find . -type f -name "*.json" -o -name "*.yaml" -o -name "*.yml" | xargs grep -l "search_entities\|get_open_targets\|query_open_targets" 2>/dev/null || echo "No tool definitions found"

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 106


🏁 Script executed:

#!/bin/bash
# Check the broader context of py-config-bot.md to understand if these are proposed/documented tools
cat -n .claude/agents/py-config-bot.md | head -50

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 2238


🏁 Script executed:

#!/bin/bash
# Look at py-plan-bot.md to see the context of the tool references there
cat -n .claude/agents/py-plan-bot.md | sed -n '200,225p'

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 1409


🏁 Script executed:

#!/bin/bash
# Search for any documentation about what these tool names should be
rg "OpenAlex" .claude/agents/ --type md -B5 -A5 | head -150

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 8117


Tool names contain potential naming inconsistency in documentation.

The referenced tool names OpenAlex:get_open_targets_graphql_schema and OpenAlex:search_entities mix namespace "OpenAlex" with method names containing "open_targets" (also see OpenAlex:query_open_targets_graphql in py-plan-bot.md). This suggests either outdated naming carried over from an earlier "Open Targets" API, or a documentation error. Consider clarifying and standardizing these tool references across .claude/agents documentation.

πŸ€– Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/agents/py-config-bot.md around lines 307 - 312, Update the
documentation to use a consistent tool naming convention for the OpenAlex tools:
replace mixed/ambiguous references like OpenAlex:get_open_targets_graphql_schema
and OpenAlex:search_entities with the canonical tool names used elsewhere (e.g.,
OpenAlex:query_open_targets_graphql if that is the intended name), and ensure
all mentions across .claude/agents (including py-plan-bot.md) match the chosen
canonical names; search for occurrences of get_open_targets, query_open_targets,
and search_entities and standardize them to a single agreed identifier, updating
the table rows and any example parameter sets accordingly.


---

Expand Down Expand Up @@ -338,8 +338,8 @@ python docs/00-project/ai/agents/scripts/py-config-bot-1.py -v

| Бсылка | ОписаниС | Verification |
|--------|----------|-------------|
| [ADR-014] | Deterministic Writes: sort_by обязатСлСн Π² Silver sink | `find configs/pipelines/ -name "*.yaml" -exec grep -L "sort_by" {} \;` |
| [ADR-014] | Deterministic Writes: sort_by обязатСлСн Π² Silver sink | `find configs/entities/ -name "*.yaml" -exec grep -L "sort_by" {} \;` |
| [ADR-025] | Pipeline Config Unification | `python docs/00-project/ai/agents/scripts/py-config-bot-1.py -v` |
| [ADR-026] | Composite Pipeline Pattern: seed/enrichers/merge | Review composite config structure |
| [ADR-027] | DQ Rules Externalization: no inline thresholds | `grep -rn "soft_fail_threshold" src/bioetl/ --include="*.py"` |
| [ADR-028] | Filter Rules Externalization | `grep -rn "gold_filters" configs/pipelines/ --include="*.yaml"` |
| [ADR-028] | Filter Rules Externalization | `grep -rn "gold_filters" configs/entities/ --include="*.yaml"` |
4 changes: 2 additions & 2 deletions .claude/agents/py-doc-bot.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ model: sonnet
- НазначСниС: ETL-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для Π΄Π°Π½Π½Ρ‹Ρ… биоактивности ΠΈΠ· Π½Π°ΡƒΡ‡Π½Ρ‹Ρ… Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…
- АрхитСктура: Hexagonal (Ports & Adapters) + Medallion (Bronze->Silver->Gold) + DDD
- Deployment: Local-Only (ADR-010) β€” Π±Π΅Π· Docker/Redis
- Π’Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС: 40 ADR (ADR-001..ADR-040), всС Π² статусС Accepted
- Π’Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС: 50 ADR (ADR-001..ADR-050), всС Π² статусС Accepted

**ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹:**

Expand All @@ -52,7 +52,7 @@ model: sonnet
| Adapters | `src/bioetl/infrastructure/adapters/{provider}/` |
| Pipelines | `src/bioetl/application/pipelines/` |
| Bootstrap | `src/bioetl/composition/bootstrap/` |
| Configs | `configs/pipelines/{provider}/{entity}.yaml` |
| Configs | `configs/entities/{provider}/{entity}.yaml` |
| ADR | `docs/02-architecture/decisions/` |
| RULES.md | `docs/00-project/RULES.md` |
| Glossary | `docs/00-project/glossary.md` |
Expand Down
2 changes: 1 addition & 1 deletion .claude/agents/py-doc-swarm.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ model: opus
- АрхитСктура: Hexagonal (Ports & Adapters) + Medallion (Bronzeβ†’Silverβ†’Gold) + DDD
- Deployment: Local-Only (ADR-010) β€” Π±Π΅Π· Docker/Redis
- 5 слоёв: domain (192), application (133), infrastructure (140), composition (54), interfaces (29)
- 310 markdown-Ρ„Π°ΠΉΠ»ΠΎΠ² Π² `docs/`, 40 ADR, 7 ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ΠΎΠ²
- 310 markdown-Ρ„Π°ΠΉΠ»ΠΎΠ² Π² `docs/`, 50 ADR, 7 ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ΠΎΠ²
- Doc site: MkDocs + Material + mkdocstrings (Google-style docstrings)

**Полная спСцификация:** `.claude/agents/py-doc-swarm-standalone.md`
Expand Down
10 changes: 5 additions & 5 deletions .claude/agents/py-plan-bot.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ model: opus
- НазначСниС: ETL-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для Π΄Π°Π½Π½Ρ‹Ρ… биоактивности ΠΈΠ· Π½Π°ΡƒΡ‡Π½Ρ‹Ρ… Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…
- АрхитСктура: Hexagonal (Ports & Adapters) + Medallion (Bronzeβ†’Silverβ†’Gold) + DDD
- Deployment: Local-Only (ADR-010)
- ΠŸΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Ρ‹: ChEMBL, PubChem, UniProt, PubMed, CrossRef, OpenAlex, SemanticScholar, IUPHAR, Open Targets
- ΠŸΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Ρ‹: ChEMBL, PubChem, UniProt, PubMed, CrossRef, OpenAlex, SemanticScholar, Semantic Scholar, OpenAlex
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟑 Minor

Duplicate providers in the list.

The provider list contains duplicates and inconsistent naming:

  • "OpenAlex" appears twice
  • "Semantic Scholar" appears as both "SemanticScholar" and "Semantic Scholar"
Proposed fix
-- ΠŸΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Ρ‹: ChEMBL, PubChem, UniProt, PubMed, CrossRef, OpenAlex, SemanticScholar, Semantic Scholar, OpenAlex
+- ΠŸΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Ρ‹: ChEMBL, PubChem, UniProt, PubMed, CrossRef, OpenAlex, SemanticScholar
πŸ“ Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- ΠŸΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Ρ‹: ChEMBL, PubChem, UniProt, PubMed, CrossRef, OpenAlex, SemanticScholar, Semantic Scholar, OpenAlex
- ΠŸΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Ρ‹: ChEMBL, PubChem, UniProt, PubMed, CrossRef, OpenAlex, SemanticScholar
πŸ€– Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/agents/py-plan-bot.md at line 35, The provider list string
"ΠŸΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Ρ‹: ChEMBL, PubChem, UniProt, PubMed, CrossRef, OpenAlex,
SemanticScholar, Semantic Scholar, OpenAlex" contains duplicates and
inconsistent naming; update that text to remove duplicates and normalize names
(use a single "OpenAlex" and a single "Semantic Scholar" form), e.g.,
"ΠŸΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Ρ‹: ChEMBL, PubChem, UniProt, PubMed, CrossRef, OpenAlex, Semantic
Scholar", ensuring only one entry per provider and consistent
spacing/capitalization.


---

Expand Down Expand Up @@ -160,7 +160,7 @@ find configs/ -name "*.yaml" | xargs grep -l "<entity>"

**Workflow для composite pipeline:**
1. Analyze Requirements β€” data sources, target layers, DQ needs
2. Design Pipeline Configuration β€” YAML Π² `configs/pipelines/composite/`
2. Design Pipeline Configuration β€” YAML Π² `configs/entities/composite/`
3. Implement Transformers β€” extend `BaseTransformer`
4. Wire Dependencies β€” factories Π² `composition/factories/`
5. Add Tests β€” unit, integration, architecture
Expand Down Expand Up @@ -204,12 +204,12 @@ find configs/ -name "*.yaml" | xargs grep -l "<entity>"
| Π’Ρ€Π΅Π½Π΄Ρ‹ ΠΏΠΎ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ | `bioRxiv:search_preprints` | `category="bioinformatics"` | ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ для planning |
| Бтатистика ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ | `bioRxiv:get_content_statistics` | `interval="monthly"` | Capacity planning |

### Open Targets β€” валидация ΠΏΠ»Π°Π½ΠΎΠ² ΠΏΠΎ Ρ‚Π°Ρ€Π³Π΅Ρ‚Π°ΠΌ
### OpenAlex β€” валидация ΠΏΠ»Π°Π½ΠΎΠ² ΠΏΠΎ Ρ‚Π°Ρ€Π³Π΅Ρ‚Π°ΠΌ

| Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ | Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ | ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ | Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ |
|----------|------------|-----------|-----------|
| ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° target existence | `Open Targets:search_entities` | `query_strings=["BRCA1"]` | ID resolution |
| ΠžΡ†Π΅Π½ΠΊΠ° data volume | `Open Targets:query_open_targets_graphql` | Query с counts | Capacity planning |
| ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° target existence | `OpenAlex:search_entities` | `query_strings=["BRCA1"]` | ID resolution |
| ΠžΡ†Π΅Π½ΠΊΠ° data volume | `OpenAlex:query_open_targets_graphql` | Query с counts | Capacity planning |
Comment on lines +207 to +212
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟑 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check for consistent OpenAlex tool naming across agent docs
rg -n "open_targets" .claude/agents/*.md

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 347


🏁 Script executed:

#!/bin/bash
# Search for OpenAlex method definitions and implementations
fd -e py -e js -e ts | xargs grep -l "OpenAlex" | head -20

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 1316


🏁 Script executed:

#!/bin/bash
# Look for method definitions containing the disputed method names
rg "query_open_targets_graphql|get_open_targets_graphql_schema|search_entities" --type py --type js --type ts -B 2 -A 2

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 63


🏁 Script executed:

#!/bin/bash
# Check the structure of the agents directory and look for OpenAlex tool configurations
cat .claude/agents/py-plan-bot.md | head -50

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 1725


🏁 Script executed:

#!/bin/bash
# Look at the OpenAlex adapter implementation
find src -type f -name "*openalex*" -o -name "*open_alex*" | head -20

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 177


🏁 Script executed:

#!/bin/bash
# Search for tool definitions or method signatures in OpenAlex-related files
rg "def.*(" src/tools/openalex* src/infrastructure/adapters/openalex* 2>/dev/null | head -30

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 63


🏁 Script executed:

#!/bin/bash
# Check if "open_targets" exists as a separate tool/integration
rg -i "open.target" src/ --type py | head -20

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 63


🏁 Script executed:

#!/bin/bash
# Find the OpenAlex adapter implementation
find src -type d -name "*openalex*"

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 201


🏁 Script executed:

#!/bin/bash
# Check the specific lines in py-plan-bot.md
sed -n '200,220p' .claude/agents/py-plan-bot.md

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 1111


🏁 Script executed:

#!/bin/bash
# Look for any tools/providers registry or configuration
rg -i "search_entities|query_open_targets" . --type md --type json --type yaml

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 63


🏁 Script executed:

#!/bin/bash
# List files in OpenAlex adapter
ls -la src/bioetl/infrastructure/adapters/openalex/

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 1384


🏁 Script executed:

#!/bin/bash
# Check for public methods/functions in the OpenAlex adapter
rg "def\s+" src/bioetl/infrastructure/adapters/openalex/ --type py -A 1 | head -50

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 3755


🏁 Script executed:

#!/bin/bash
# Check if "open_targets" is mentioned anywhere in the OpenAlex adapter files
rg "open_target" src/bioetl/infrastructure/adapters/openalex/ -i

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 63


🏁 Script executed:

#!/bin/bash
# Check if "Open Targets" exists as a separate provider/tool
rg -i "open.*target" src/ --type py | grep -v ".pyc"

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 218


🏁 Script executed:

#!/bin/bash
# Check all providers mentioned in the py-plan-bot.md file
grep -E "^\s*-\s+.*:" .claude/agents/py-plan-bot.md | head -20

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 913


🏁 Script executed:

#!/bin/bash
# Look at the client.py to see what public methods are exposed
sed -n '1,100p' src/bioetl/infrastructure/adapters/openalex/client.py

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 3286


🏁 Script executed:

#!/bin/bash
# Check if these are meant to be actual method implementations or just documentation examples
# Look for any MCP tool definitions or tool registry
find . -name "tools.json" -o -name "tools.yaml" -o -name "*tools*config*" 2>/dev/null

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 63


🏁 Script executed:

#!/bin/bash
# Check the README or docs for tool naming conventions
find docs -name "*.md" 2>/dev/null | xargs grep -l "OpenAlex\|tool.*naming" 2>/dev/null | head -5

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 278


🏁 Script executed:

#!/bin/bash
# Look at the complete py-plan-bot.md to understand context of these "tools"
wc -l .claude/agents/py-plan-bot.md

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 114


🏁 Script executed:

#!/bin/bash
# Look at broader context around the OpenAlex section
sed -n '180,237p' .claude/agents/py-plan-bot.md

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 2214


🏁 Script executed:

#!/bin/bash
# Check if there's any mention of "open_targets" as a separate data source
grep -r "open.target" docs/ .claude/ --ignore-case -i

Repository: SatoryKono/BioactivityDataAcquisition

Length of output: 520


OpenAlex:query_open_targets_graphql incorrectly references a different data source.

The method name OpenAlex:query_open_targets_graphql conflates OpenAlex with Open Targets, which is documented as a separate adapter/pipeline (opentargets). The "open_targets" suffix should not appear in OpenAlex tool names. Ensure consistency with the actual data source naming convention.

πŸ€– Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/agents/py-plan-bot.md around lines 207 - 212, The OpenAlex tool name
wrongly includes the Open Targets suffix β€” change all occurrences of
"OpenAlex:query_open_targets_graphql" to a clean OpenAlex name such as
"OpenAlex:query_graphql" (or another consistent OpenAlex-only identifier you
use), and update any doc/table references and tooling metadata that reference
that symbol so they no longer reference the separate "opentargets" adapter;
ensure the symbol rename is applied wherever
"OpenAlex:query_open_targets_graphql" appears.


### PubMed β€” ΠΎΡ†Π΅Π½ΠΊΠ° publication coverage

Expand Down
Loading
Loading