agentsclimarketplace

Eop analyze

Skill Lutherwaves/eopowers/skills/eop-analyze

Изтегля документацията на конкретна поръчка от eop.bg, анализира изискванията и подготвя структуриран анализ. Използва се след избор на поръчка от eop-scan.From its SKILL.md

Install
npx -y skills add Lutherwaves/eopowers --skill eop-analyze

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

6.7 KB, as published. Nobody here has run it

Зареждане на контекст

Преди да започнеш, прочети метаданните на поръчката с Read tool:

  • Файл: ./eopowers/offers/$ARGUMENTS/meta.md
  • Ако файлът не съществува — съобщи: "Няма метаданни — стартирайте /eop-scan първо"

Анализ на поръчка $ARGUMENTS

Чеклист

  • Навигиране до страницата на поръчката
  • Изтегляне на всички прикачени файлове
  • Разархивиране на ZIP файлове (ако има)
  • Парсване на техническа спецификация
  • Парсване на документация и критерии за оценка
  • Идентификация на шаблон(и) за оферта
  • Парсване на КСС (ако има Excel файлове)
  • Генериране на analysis.md

Изтегляне на документи

Проверка за вече изтеглени файлове: Ако ./eopowers/offers/$ARGUMENTS/attachments/ вече съществува и съдържа файлове (изтеглени от eop-scan) — пропусни изтеглянето и премини директно към парсване. Покажи: "📁 Прикачените файлове вече са изтеглени от eop-scan. Преминавам към анализ."

  1. Навигирай до https://app.eop.bg/today/$ARGUMENTS
  2. Направи snapshot за да намериш секцията с прикачени файлове ("Прикачени файлове")
  3. Изтегли всеки файл като натиснеш бутона за сваляне (ref от snapshot)
  4. Запази файловете в ./eopowers/offers/$ARGUMENTS/attachments/
  5. Ако има ZIP файлове, разархивирай ги:
    python3 -c "
    

import zipfile, os, shutil, subprocess

attachments = './eopowers/offers/$ARGUMENTS/attachments'

Extract ZIPs

for f in [x for x in os.listdir(attachments) if x.endswith('.zip')]: zipfile.ZipFile(os.path.join(attachments, f)).extractall(attachments)

Extract RARs

for f in [x for x in os.listdir(attachments) if x.endswith('.rar')]: subprocess.run(['unrar', 'x', '-o+', os.path.join(attachments, f), attachments + '/'], capture_output=True)

Normalize Windows backslash paths — flatten to attachments/

for root, dirs, files in os.walk(attachments): for fname in files: src = os.path.join(root, fname) dst = os.path.join(attachments, fname) if src != dst and not os.path.exists(dst): shutil.move(src, dst)

Remove empty subdirectories

for root, dirs, files in os.walk(attachments, topdown=False): if root != attachments and not os.listdir(root): os.rmdir(root) "


**Обработка на грешки:** timeout 60 секунди на файл, пропускай повредени файлове и документирай в analysis.md.

---

### Идентификация на шаблон

Евристика за идентификация на шаблон:

1. **Имена на файлове:** търси "образец", "приложение", "template", "оферт", "предложение"
2. **Структура на документа:** двуколонни таблици, полета за попълване, празни клетки
3. **Тип файл:** DOCX за текстови шаблони, XLSX за КСС
4. **При неяснота:** попитай потребителя "Кой файл е шаблонът за оферта?"

---

### Парсване на документи

Изпрати subagent eop-offer-analyzer с пътищата до всички изтеглени файлове за структурирано извличане на данни.

Алтернативно, парсвай директно:

**DOCX файлове:**
```python
python -c "
from docx import Document
doc = Document('path/to/file.docx')
for para in doc.paragraphs:
 print(para.text)
for table in doc.tables:
 for row in table.rows:
     print(' | '.join(cell.text.strip() for cell in row.cells))
"

XLSX файлове (КСС):

python -c "
from openpyxl import load_workbook
wb = load_workbook('path/to/file.xlsx')
for sheet in wb.sheetnames:
    ws = wb[sheet]
    for row in ws.iter_rows(values_only=True):
        print(' | '.join(str(c) if c else '' for c in row))
"

Генериране на analysis.md

След успешно парсване, запиши ./eopowers/offers/$ARGUMENTS/analysis.md със следната структура:

# Анализ на поръчка $ARGUMENTS

## Обща информация
- Възложител: [name]
- Уникален номер: [number]
- Прогнозна стойност: [value]
- Краен срок: [deadline]
- Начин на възлагане: [procedure]

## Критерии за оценка
- Цена: [X]%
- Техническо предложение: [Y]%
- Срок за изпълнение: [Z]%
(или: "Най-ниска цена" ако единствен критерий)

## Изисквания (по позиции)
| # | Изискване | Минимум | Единица | Забележка |
|---|-----------|---------|---------|-----------|
| 1 | ...       | ...     | ...     | ...       |

## КСС позиции (ако има)
| # | Описание | Ед. мярка | Количество | Ед. цена | Обща стойност |
|---|----------|-----------|-----------|----------|---------------|
| 1 | ...      | ...       | ...       | (празно) | (празно)      |

## Идентифицирани шаблони
- Оферта (DOCX): [filename]
- КСС (XLSX): [filename]
- Други: [list]

## Специални условия
- Гаранция за участие: [amount/type]
- Гаранция за изпълнение: [amount/type]
- Подизпълнители: [allowed/not allowed]
- Срок за изпълнение: [max days]

## Прикачени файлове
- [filename1] — [description/type]
- [filename2] — [description/type]

Keep looking

Skills are one crate of 627,801. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.