Faits :
A.
Le 1 er avril 2007, Z._ a été engagée en qualité d'infirmière scolaire par X._. Jusqu'au 31 juillet 2010, elle a exercé son activité professionnelle à L._. Du 1 er août 2010 au 31 octobre 2011, elle a travaillé au sein des établissements de L._ et de N._, sur le site de U._. A partir du 1 er novembre 2011, elle a été rattachée aux établissements de M._, à..., ainsi que de N._, sur le site de U._, puis également, courant 2012, à l'école primaire de O._, à.... En tant qu'infirmière scolaire, Z._ dépendait du service de santé scolaire de X._. La cheffe de ce service était A._, dont l'adjointe était B._; C._, infirmière responsable du..., était la supérieure directe de Z._. Si X._ était l'employeuse de l'infirmière scolaire, celle-ci dépendait également, dans les faits, de la direction des établissements dans lesquels elle déployait son activité.
A l'établissement M._, de vives tensions ont rapidement surgi entre Z._ et le directeur E._, d'une part, et le secrétariat, d'autre part. L'élément déclencheur du conflit a été la dissolution par le directeur du groupe santé auquel participaient l'infirmière scolaire et des enseignants de l'établissement. La situation conflictuelle entre l'infirmière scolaire et le directeur s'est amplifiée lorsque ce dernier a décidé de déplacer l'infirmerie dans des locaux attenants à ceux de la direction et du secrétariat, lesquels offraient une moins bonne garantie de confidentialité.
Par courriel du 2 juillet 2013, Z._ a exprimé à C._ ses inquiétudes pour l'année scolaire suivante. Elle faisait état de "situations de tensions et de pressions permanentes" au cours de l'année écoulée et avouait avoir "le sentiment qu'on jou[ait] vraiment avec le feu, avec les limites de chacune".
Le 3 septembre 2013, Z._ a réitéré ses inquiétudes à C._ dans un courriel qui contient les passages suivants:
" Pour dire vrai, j'ai de plus en plus de mal à travailler dans une ambiance où, clairement, chacun de mes actes et gestes sont analysés et source de conflit. L'exemple d'il y a une heure est assez représentatif de mes journées: Les rendez-vous que j'ai jeudi matin durant moins longtemps que prévu, je suis allée annoncer au secrétariat que je serais à M._ dès la fin de matinée et la pause de midi, au lieu du début d'après-midi prévu. Je suis également venue cet après-midi pour finaliser mon planning d'infos vaccination, alors que je devais être absente.
La réaction, alors que j'annonce que je suis là deux fois plus longtemps que prévu...est très agressive, et la secrétaire me demande brutalement pourquoi je suis là sur la pause de midi, en me signifiant que «je ne leur sers à rien vu qu'elles ne sont pas là»...
Je suis restée calme, en disant que je voyais durant la pause de midi de nombreux élèves, qu'elles avaient normalement en début d'après-midi en mon absence. J'ai eu un haussement d'épaules et un ricanement en retour.
Ce genre d'attitude me passe en normal totalement «au-dessus», mais j'avoue qu'à le vivre dès 8h du matin 3 jours sur 5 quasi en continu devient plus que difficile, et commence à se marquer aussi quand je rentre chez moi le soir. (...)
Bref je termine mes journées ici extrêmement découragée, je ne te le cache pas, et aller à U._ est pour l'instant un soulagement.
(...) je mets tellement d'énergie à rester zen et professionnelle sans réagir aux attaques perpétuelles (...).
Voilà je te propose qu'on en reparle peut-être quand j'aurai pris un peu de distance avec tout cela, mais je ne me vois pas continuer des mois de cette manière-là. "
Z._ n'a pas reçu de réponse à ce courriel.
En septembre 2013, le directeur a supprimé l'aide du secrétariat pour la planification des vaccinations, alors que l'infirmière ne pouvait accomplir seule cette tâche.
Un incident survenu le 12 septembre 2013 a cristallisé le conflit entre les protagonistes. Ce jour-là, Z._ se trouvait au collège de O._, à..., à une réunion de planification de projet en santé scolaire. Pendant la séance, le secrétariat de M._ a appelé l'infirmière scolaire à plusieurs reprises et avec insistance parce qu'un enfant de l'établissement saignait du nez. Finalement, c'est le directeur qui a téléphoné à Z._ et lui a ordonné, sur un ton sec et impératif, de revenir à M._ pour s'occuper de l'enfant.
Par courriel du 13 septembre 2013, Z._ a informé D._ à l'UPSPS (Unité de promotion de la santé et de prévention en milieu scolaire) des faits survenus la veille; elle a fait part de son désarroi et précisé que ses supérieurs lui demandaient de ne plus retourner à M._ jusqu'à nouvel avis. D._ lui a répondu que la séance de clôture de la cellule de crise «à la mode M. E._» allait probablement déclencher une interpellation de sa hiérarchie, puisqu'il était désormais évident que la maîtrise de la situation échappait à tout le monde.
Le 26 septembre 2013, l'infirmière scolaire a rencontré F._, éthicien et superviseur agréé par X._, lequel a ensuite adressé un rapport à B._. Il y indiquait que "la problématique lui semblait structurelle (liée à un système, une dynamique spécifique au collège et à sa gestion) ". A son sens, il fallait protéger l'infirmière en ne l'envoyant pas au "casse-pipe" et clarifier le problème, ce qui impliquait de la part de l'employeuse notamment de préciser le mandat de l'infirmière scolaire aux membres du secrétariat en présence de l'intéressée et du directeur. Il percevait "une certaine urgence" à agir en raison de "la difficulté ou l'impossibilité de faire face au mandat de l'infirmière scolaire dans les conditions actuelles."
Par courriel du 3 octobre 2013, X._ a formellement autorisé Z._ à travailler provisoirement à distance de l'établissement M._ et précisé que la situation serait réévaluée après le rendez-vous avec le Dr G._, médecin du travail de l'employeuse.
L'employée a rencontré ce dernier le 8 octobre 2013. Le rapport du Dr G._ à l'adresse de B._ contient les observations suivantes:
(...) je n'ai bien sûr qu'une vision unilatérale de la situation. Toutefois, la situation professionnelle décrite par Mme Z._ me paraît actuellement extrêmement critique. Elle paraît préjudiciable pour sa santé et je n'ai pas d'autre élément objectif en cause influençant la situation actuelle de Mme Z._.
(...) Un retour de Mme Z._ dans son poste à M._ me paraît extrêmement risqué et la probabilité d'une dégradation rapide de la situation me paraît très élevée. Mme Z._ me paraît aussi à la limite de sa capacité de résistance, bien qu'elle paraisse disposer d'une bonne capacité de coping et de bonnes ressources personnelles. Je suis même étonné qu'elle ait résisté aussi longtemps à une telle situation (...) ".
Malgré sa demande, le Dr G._ n'a pas été tenu informé des mesures prises et de leur résultat.
Le 30 octobre 2013, Z._ a adressé un courriel à F._. Elle y déclarait notamment que ses interlocuteurs à X._ étaient "sourds, aveugles et amnésiques tous les 15 jours en RE changeant de discours". Elle se sentait piégée et découragée, tout en ne comprenant pas la proposition de l'employeuse d'envoyer une collègue à M._ jusqu'à Noël avant de la faire réintégrer son poste là-bas.
Le 12 novembre 2013, C._ et B._ ont rencontré Z._; trois possibilités ont été évoquées: un retour à l'établissement M._ avec un soutien de la part de la supérieure directe, une médiation externe ou une mise en arrêt maladie. Par courriel du même jour à C._, l'employée a indiqué qu'elle allait retourner à M._ dès le lendemain "comme la situation l'exige[ait]" et "essayer de reprendre [ses] marques sur place avant de donner un avis quant à une éventuelle médiation externe".
Une fois que l'infirmière scolaire a repris son travail à l'établissement M._, le directeur lui a présenté ses excuses, en présence de C._, pour les difficultés éprouvées dans son activité, notamment en lien avec les tensions qu'il avait générées ou qu'elle avait rencontrées avec le secrétariat.
Le 21 novembre 2013, Z._ a été victime d'un accident de voiture. Durant son arrêt de travail, elle a continué à recevoir des courriels et des appels du secrétariat de l'établissement M._.
Le 28 novembre 2013, l'employée a envoyé à une amie infirmière un courriel, transmis par erreur en copie à C._, B._ ainsi qu'au directeur et au secrétariat de l'établissement M._. Se disant à bout de nerfs et sous médication, Z._ y faisait référence à une secrétaire qualifiée de «punaise». L'infirmière scolaire a immédiatement envoyé un nouveau courriel, dans lequel elle regrettait les termes utilisés, tout en rappelant que la situation n'était plus gérable depuis plus d'une année.
Z._ a repris son activité professionnelle à 50% dès le 7 janvier 2014. Le surlendemain, X._ lui a notifié un avertissement en rapport avec le courriel mal adressé du 28 novembre 2013.
A partir du 31 janvier 2014, Z._ s'est trouvée à nouveau en incapacité totale de travail. Par la suite, l'assureur perte de gain reconsidérera l'incapacité pour cause d'accident et la redéfinira comme étant due à une maladie.
Après avoir informé C._ d'une reprise d'activité à 40% dès le 2 juin 2014, Z._ a été convoquée dans les locaux de X._ le 3 juin 2014 afin de discuter de cette question. Selon un document signé à cette occasion par l'infirmière scolaire, la hiérarchie était d'avis qu'en raison de l'incident du 28 novembre 2013, le lien de confiance entre la direction de l'établissement M._ et Z._ était définitivement rompu; il a été décidé de rattacher l'infirmière uniquement au site de U._ à concurrence d'un taux d'activité de 31,23%.
Le 8 septembre 2014, alors qu'elle devait se rendre à une réunion de groupe, Z._ a été prise à part de manière inattendue par C._, qui lui a remis pour signature un courrier accompagné d'un congé-modification. Estimant ne pouvoir proposer à l'infirmière scolaire une activité dans un autre établissement en remplacement de celle effectuée à 51,60% à M._, X._ avait établi un nouveau contrat de travail avec effet au 1er février 2015, portant uniquement sur le taux résiduel de 31,23% auprès des établissements primaire et secondaire de U._. Un délai au 23 septembre 2014 était imparti à l'employée pour retourner le nouveau contrat signé, à défaut de quoi les rapports de travail prendraient fin au 31 janvier 2015. Z._ a refusé de signer, n'acceptant pas que son taux d'activité soit réduit de 82,92% à 31,23% et rappelant qu'elle avait trois enfants à charge.
A la suite de cet épisode, vécu comme une violence terrible, Z._ a été en incapacité de travail à 100% jusqu'au 12 mars 2015, puis à 90%.
Le 25 septembre 2014, X._ a résilié le contrat de travail au 31 janvier 2015, terme reporté au 30 avril 2015 en raison de l'incapacité de travail de l'employée.
Par courrier du 16 mars 2015, Z._ a formé opposition au congé auprès de X._.
B.
Par demande du 5 octobre 2015, Z._ a conclu notamment à ce que X._ soit reconnue sa débitrice et lui doive paiement immédiat d'un montant net de 69'954 fr.10 avec intérêts à 5% dès le 1 er mai 2016. Par la suite, la demanderesse réduira ses conclusions en paiement à 63'293 fr.55, soit 43'293 fr.55 à titre d'indemnité pour licenciement abusif et 20'000 fr. en indemnisation du tort moral.
Par jugement du 6 décembre 2016, le Tribunal civil de l'arrondissement de Lausanne a condamné X._ notamment à payer à Z._ la somme de 28'862 fr.40 plus intérêts à 5% dès le 1 er mai 2015. Les premiers juges ont admis le caractère abusif du licenciement et alloué à l'employée une indemnité équivalant à quatre mois de salaire.
Statuant le 29 janvier 2018, la Cour d'appel civile du Tribunal cantonal du canton de Vaud a rejeté l'appel de X._ et confirmé le jugement du 6 décembre 2016.
C.
X._ interjette un recours en matière civile. Elle conclut à la réforme de l'arrêt cantonal en ce sens que la demande de Z._ est rejetée, subsidiairement en ce sens que l'indemnité due à Z._ est réduite au plus au montant net de 6'660 fr.55.
Z._ propose le rejet du recours. Elle sollicite l'assistance judiciaire complète, en particulier la désignation comme avocate d'office de la mandataire ayant signé le mémoire de réponse.
Invitée à se déterminer, la cour cantonale se réfère aux considérants de son arrêt.

Considérant en droit :
1.
L'arrêt attaqué est une décision finale (<ref-law>) rendue en matière civile (<ref-law>) par le tribunal supérieur institué comme autorité cantonale de dernière instance, lequel a statué sur recours (<ref-law>). La valeur litigieuse atteint le seuil de 15'000 fr., ouvrant le recours en matière civile dans les affaires relevant du droit du travail (<ref-law>). Le recours est exercé par la partie qui a succombé dans ses conclusions libératoires et qui a donc qualité pour recourir (<ref-law>); il a été déposé en temps utile (<ref-law>) et dans la forme (<ref-law>) prévue par la loi. Le recours est en principe recevable, sous réserve de l'examen des griefs particuliers.
2.
Invoquant les art. 9 Cst. et 97 LTF, la recourante reproche à la cour cantonale d'avoir retenu de façon arbitraire cinq faits en rapport avec les attitudes respectives des parties de juillet à novembre 2013 ainsi qu'avec la possibilité de déplacer l'infirmière scolaire.
2.1. Le Tribunal fédéral statue sur la base des faits établis par l'autorité précédente (<ref-law>). Il ne peut rectifier ou compléter les constatations de l'autorité précédente que si elles sont manifestement inexactes ou découlent d'une violation du droit au sens de l'<ref-law> (<ref-law>). "Manifestement inexactes" signifie ici "arbitraires" (<ref-ruling> consid. 1.3.1 p. 253; <ref-ruling> consid. 2.3 p. 266; <ref-ruling> consid. 2 p. 117; <ref-ruling> consid. 1.5). Encore faut-il que la correction du vice soit susceptible d'influer sur le sort de la cause (<ref-law>). La critique de l'état de fait retenu est soumise au principe strict de l'allégation énoncé par l'<ref-law> (ATF <ref-ruling> consid. 2.3 p. 266 et les références). La partie qui entend attaquer les faits constatés par l'autorité précédente doit expliquer clairement et de manière circonstanciée en quoi ces conditions seraient réalisées (<ref-ruling> consid. 1.3.1 p. 18 et les références).
En matière de constatations de fait et d'appréciation des preuves, le Tribunal fédéral se montre réservé, vu le large pouvoir qu'il reconnaît en ce domaine aux autorités cantonales. Il n'intervient, du chef de l'art. 9 Cst., que si le juge du fait n'a manifestement pas compris le sens et la portée d'un moyen de preuve, a omis sans raisons objectives de tenir compte des preuves pertinentes ou a effectué, sur la base des éléments recueillis, des déductions insoutenables (ATF <ref-ruling> consid. 2.3 p. 265; <ref-ruling> consid. 4.2; <ref-ruling> consid. 4.2; <ref-ruling> consid. 4.3; <ref-ruling> consid. 1.4.3; <ref-ruling> consid. 2.1).
2.2.
2.2.1. Selon la recourante, la cour cantonale a arbitrairement retranché de ses constatations de fait le passage du courriel du 2 juillet 2013 dans lequel l'intimée déclare "espérer que cela restera en équilibre" et "tout faire, comme [ses] deux très professionnelles collègues, pour que cela fonctionne" tout en craignant qu'"en cours d'année l'équilibre précaire se rompe quelque part, et qu'on [les] tienne pour responsables". Or, ce passage relativiserait fortement l'urgence de la situation, de sorte que l'autorité précédente aurait versé dans l'arbitraire en voyant dans le courriel en question un appel au secours nécessitant une réponse de la part de l'employeuse.
Analysant le courriel du 2 juillet 2013, la cour cantonale a bien observé que l'intimée n'y sollicite pas expressément l'intervention de la recourante, mais qu'elle dénonce une situation qui ne saurait perdurer. Ces constatations ne procèdent manifestement pas d'une mauvaise compréhension du sens du courriel en question, la partie non retranscrite de celui-ci n'y changeant rien à cet égard. Le grief tiré d'une appréciation arbitraire des preuves est mal fondé.
2.2.2. La recourante reproche à la cour cantonale d'avoir arbitrairement retenu que l'intimée avait été autorisée à travailler à distance de l'établissement M._ à partir du 3 octobre 2013, alors que cette organisation du travail avait déjà été mise en place dès le 12 septembre 2013, date de l'incident téléphonique avec le directeur au sujet de l'enfant saignant du nez.
Dans son courriel à D._ du 13 septembre 2013, retranscrit dans l'arrêt attaqué, l'intimée déclare effectivement être dispensée par ses supérieurs de se rendre à M._ jusqu'à nouvel avis. Le 3 octobre 2013 correspond à la date du courriel par lequel l'employeuse autorise formellement l'infirmière à travailler à distance de l'établissement de M._ Cela étant, la cour cantonale n'a pas retenu à charge de la recourante le fait qu'elle aurait dispensé l'intimée de se rendre à M._ seulement à partir du 3 octobre 2013. Que l'autorisation de travail à distance soit intervenue le 12 septembre plutôt que le 3 octobre 2013 n'est en définitive pas un élément de nature à modifier l'appréciation de l'attitude globale de l'employeuse face aux problèmes rencontrés par son employée dans l'établissement en cause. Il ne s'agit donc pas d'un fait propre à influer sur le sort du litige, comme l'<ref-law> l'exige.
2.2.3. Selon la recourante, la cour cantonale aurait dû, dans son appréciation de l'attitude des parties, tenir compte de la médiation externe proposée par l'employeuse en novembre 2013 - qui aurait été refusée sans motif valable par l'employée - ainsi que de l'appel quotidien de la supérieure, prévu pour encadrer le retour de l'infirmière à M._. En omettant ces éléments importants pour juger du caractère suffisant des mesures de protection de la personnalité de l'intimée, l'autorité précédente aurait versé dans l'arbitraire.
Contrairement à ce que la recourante soutient, la cour cantonale n'a occulté ni la médiation externe proposée par la recourante, ni les deux autres mesures soumises à l'intimée, soit la mise en congé maladie ou la reprise du travail avec le soutien de l'employeuse, l'infirmière ayant finalement opté pour cette dernière solution. Sous l'angle de l'établissement des faits, la cour cantonale n'a en aucun cas omis des éléments pertinents et le grief d'arbitraire se trouve là aussi privé de fondement.
2.2.4. La recourante reproche également à la cour cantonale de n'avoir arbitrairement pas tenu compte de l'intégralité du courriel mal adressé du 28 novembre 2013. Dans le passage omis, l'intimée évoque les conseils donnés par son avocat d'alors, consistant à parler de "lésions importantes" et à "jouer à l'andouille", ce qui prouverait la stratégie de victimisation menée par l'infirmière aux fins de faire artificiellement échec aux tentatives de l'employeuse.
Les déductions que la recourante tire du passage en question sont loin d'être évidentes, de sorte que la cour cantonale pouvait sans arbitraire ne pas tenir compte de cette preuve dépourvue de pertinence.
2.2.5. Sous l'angle de l'arbitraire, la recourante s'en prend encore aux constatations relatives à la possibilité de placer l'intimée dans un autre poste au sein de l'association employeuse, présentée comme importante en Suisse romande et disposant d'une capacité financière suffisante pour faire face à ses obligations.
Le grief d'arbitraire dans l'établissement des faits est d'emblée privé de fondement dans la mesure où, contrairement aux premiers juges, la cour cantonale a jugé non pertinent le point de savoir s'il était possible d'affecter l'infirmière scolaire à un autre poste.
La capacité financière de la recourante est un élément qui a été pris en compte lors de la fixation de l'indemnité pour licenciement abusif. En retenant que l'employeuse est une association importante en Suisse romande disposant de la capacité financière suffisante pour assumer ses obligations dans ce cadre-là, la cour cantonale s'est fondée sur des faits notoires, de sorte que, là aussi, le grief tiré d'une violation de l'art. 9 Cst. doit être écarté.
3.
La recourante conteste ensuite le caractère abusif du congé notifié à l'intimée. Elle fait valoir que, contrairement à l'avis des juges vaudois, elle a pris les mesures adéquates au sens de l'<ref-law> afin de remédier aux difficultés relationnelles entre l'intimée et l'établissement scolaire M._. A son sens, c'est l'intimée qui a fait obstacle aux solutions proposées.
3.1. Il convient de poser au préalable le cadre dans lequel l'intimée a été licenciée. Le congé est intervenu à la suite du refus de l'infirmière scolaire de signer un nouveau contrat de travail prévoyant un taux d'activité de 31,23% alors qu'elle était occupée jusqu'ici à 82,92%. La recourante avait motivé cette proposition par le fait qu'elle ne pouvait plus assurer à l'intimée l'activité à 51,60% exercée auprès de l'établissement M._; selon elle, le lien de confiance entre l'infirmière et la direction de l'établissement était définitivement rompu en raison du courriel mal adressé du 28 novembre 2013 désignant l'une des secrétaires de cet établissement par le qualificatif de «punaise».
3.2. Le contrat de travail de durée indéterminée peut être résilié par chacune des parties (<ref-law>). En droit suisse du travail, la liberté de résiliation prévaut de sorte que, pour être valable, un congé n'a en principe pas besoin de reposer sur un motif particulier. Le droit de chaque cocontractant de mettre fin au contrat unilatéralement est toutefois limité par les dispositions sur le congé abusif (<ref-law>; <ref-ruling> consid. 2.3 p. 514; <ref-ruling> consid. 2.1 p. 116; <ref-ruling> consid. 4.1 p. 538).
L'art. 336 al. 1 et 2 CO énumère des cas dans lesquels la résiliation est abusive. Cette liste n'est pas exhaustive; elle concrétise avant tout l'interdiction générale de l'abus de droit. Un congé peut donc se révéler abusif dans d'autres situations que celles énoncées par la loi; elles doivent toutefois apparaître comparables, par leur gravité, aux hypothèses expressément envisagées (<ref-ruling> consid. 2.3 p. 514 s.; <ref-ruling> consid. 2.1 p. 116; <ref-ruling> consid. 4.2 p. 538).
Ainsi, l'abus pourra résider dans l'exploitation par l'employeur qui résilie de sa propre violation du devoir imposé par l'<ref-law> de protéger la personnalité du travailleur (<ref-ruling> consid. 2a p. 73). Par exemple, lorsqu'une situation conflictuelle sur le lieu de travail nuit notablement au travail en commun dans l'entreprise, le congé donné à l'un des employés en cause est abusif si l'employeur ne s'est pas conformé à l'<ref-law> en prenant préalablement toutes les mesures que l'on pouvait attendre de lui pour désamorcer le conflit (ATF <ref-ruling> consid. 2.2 p. 117; <ref-ruling> consid. 2c p. 74; cf. également <ref-ruling> consid. 2.5 et 2.6 p. 516 s.). De même, un licenciement motivé par une baisse des prestations du travailleur est abusif si celle-ci est la conséquence d'un harcèlement psychologique toléré par l'employeur en violation de l'<ref-law> (<ref-ruling> consid. 2a p. 72/73).
Un congé donné pour le motif que le travailleur n'a pas accepté une modification du contrat (congé-modification au sens large) n'est pas abusif en tant que tel. Il peut l'être dans des circonstances particulières, si l'employeur a proposé des modifications appelées à entrer en vigueur avant l'expiration du délai de résiliation, s'il utilise la résiliation comme moyen de pression pour imposer au travailleur une modification injustifiée - par exemple des clauses contractuelles moins favorables sans motifs économiques liés à l'exploitation de l'entreprise ou aux conditions du marché - ou encore si le congé est donné parce que l'employé refuse de conclure un nouveau contrat qui viole la loi, la convention collective ou le contrat-type applicables (<ref-ruling> consid. 2a p. 72; <ref-ruling> consid. 3b p. 250 s. et consid. 4a p. 251; arrêt 4A_194/2011 du 5 juillet 2011 consid. 6.1 et les arrêts cités).
3.3. La cour cantonale considère le licenciement de l'intimée comme abusif parce que la recourante a invoqué un motif abusif - soit le courriel du 28 novembre 2013 comportant le terme "punaise" - alors qu'elle n'avait elle-même pas pris les mesures de protection adéquates dans le conflit opposant son employée au directeur et aux secrétaires de l'établissement M._. Il s'agit là d'un raccourci. En fait, le motif du congé réside dans le refus de l'intimée d'accepter un nouveau contrat de travail impliquant une réduction très importante de son taux d'activité. La question est dès lors de savoir si ce congé-modification est abusif dans les circonstances de l'espèce, en d'autres termes si la recourante a cherché par ce biais à imposer à l'intimée une modification injustifiée. C'est en rapport avec la justification de cette modification que le comportement respectif des parties doit être examiné.
Selon les constatations figurant dans l'arrêt cantonal, la modification proposée - taux d'activité passant d'environ 80% à environ 30% - était motivée par la rupture du lien de confiance entre l'intimée et la direction de l'établissement M._, intervenue à la suite du courriel du 28 novembre 2013 que l'intimée a envoyé par erreur en copie à la direction et au secrétariat dudit établissement. En d'autres termes, la recourante attribue à l'intimée la responsabilité de la perte de confiance avec l'établissement M._ pour avoir qualifié l'une des secrétaires de «punaise». Or, cet épisode, somme toute bénin, ne révèle pas une grave violation du devoir de diligence et de fidélité de l'employée, comme la cour cantonale le souligne à juste titre. En outre, il est survenu après des mois de difficultés relationnelles importantes avec l'établissement litigieux, dénoncées de longue date par l'intimée.
Conformément à l'<ref-law>, il appartenait à la recourante de protéger la personnalité et la santé de son employée dans les rapports de celle-ci avec l'établissement scolaire où elle avait été affectée. La question est de savoir si l'employeuse a pris des mesures adéquates et suffisantes dans les circonstances de l'espèce. La cour cantonale le nie. Pour sa part, la recourante fait valoir que l'intimée avait déjà connu des problèmes relationnels dans son poste précédent et que le transfert à l'établissement M._ avait constitué une solution. Elle considère avoir satisfait à son devoir de protection et soutient que c'est l'intimée qui a fait obstacle aux mesures proposées.
En premier lieu, en ce qui concerne la situation professionnelle de l'intimée avant son arrivée à l'établissement M._, il convient de relever que les faits invoqués par la recourante ne ressortent pas des constatations de l'autorité précédente, qui lient la cour de céans. Les prétendues difficultés relationnelles entre l'intimée et le directeur de l'établissement de L._ figurent uniquement dans le témoignage de l'adjointe B._, simplement relaté en tant que tel dans l'arrêt attaqué. Il résulte en outre de la décision entreprise que le transfert à l'établissement litigieux de... faisait suite à une demande de l'intimée elle-même, que la recourante avait soutenue.
Il est à noter également qu'aucun élément de l'arrêt attaqué ne laisse supposer que l'infirmière scolaire aurait rencontré des difficultés dans le poste qu'elle occupait parallèlement à celui de.... En revanche, il ressort clairement de la décision entreprise - qui se fonde notamment sur la réponse de D._ au courriel du 13 septembre 2013 - qu'un climat délétère régnait à l'établissement M._ et qu'il n'était pas ressenti exclusivement par l'intimée. Il incombait donc à l'employeuse de réagir rapidement et efficacement aux doléances de l'infirmière.
Celles-ci figurent tout d'abord dans le courriel du 2 juillet 2013, à la fin de l'année scolaire, dont on comprend qu'elle a été difficile. L'intimée y confie notamment son "inquiétude" après "avoir passé une soirée et une nuit sur la situation prévue pour l'année prochaine" et déclare avoir "le sentiment qu'on joue vraiment avec le feu, avec les limites de chacune". Le courriel du 3 septembre 2013 est plus précis et alarmant. L'infirmière scolaire y déclare avoir toujours "plus de mal à travailler dans une ambiance où, clairement, chacun de [ses] actes et gestes sont analysés et source de conflit"; à propos d'une réaction très agressive et d'un ricanement d'une secrétaire, elle avoue que ce genre d'attitude, à la longue, trois jours sur cinq, devient plus que difficile à vivre et a des répercussions sur sa vie privée, tout en précisant mettre "tellement d'énergie à rester zen et professionnelle sans réagir aux attaques perpétuelles" et "termine[r] [ses] journées [à M._] extrêmement découragée". Certes, comme la recourante le fait observer, l'intimée conclut le courriel en proposant à sa supérieure directe qu'"on en reparle peut-être quand [elle] aur[a] pris un peu de distance avec tout cela", mais ajoute qu'elle ne se voit pas "continuer des mois de cette manière-là". On pourrait en déduire que l'intimée relativise l'urgence de la situation et ne requiert pas une intervention. Ce n'est toutefois pas à l'employée de décrire les mesures à prendre pour sa protection. Les termes utilisés dans les deux courriels, spécialement dans le second, permettaient indéniablement à l'employeuse de prendre conscience des difficultés importantes rencontrées par l'intimée dans l'établissement scolaire litigieux et de leur impact sur sa santé mentale. Or, l'absence de réponse et donc de soutien de la part de l'employeuse à ce stade-là apparaît critiquable au regard de l'<ref-law>.
C'est l'incident du 12 septembre 2013 qui a fait réagir la recourante pour la première fois. Elle a autorisé l'intimée à travailler à distance de l'établissement de M._, puis l'infirmière a pu rencontrer un éthicien/superviseur agréé et le médecin du travail. De l'avis du premier, l'origine du conflit réside dans un problème structurel lié au fonctionnement de l'établissement en cause, et non à la personne de l'intimée, dont il note la difficulté voire l'impossibilité de faire face au mandat confié dans les conditions actuelles. Le superviseur estime qu'il faut protéger l'infirmière et ne pas l'envoyer au "casse-pipe". Dans l'idée de "légitimer institutionnellement" l'intimée, il préconise notamment de clarifier les rôles de chacun et de communiquer avec précision aux secrétaires le cahier des charges de l'infirmière, en présence du directeur avec lequel l'employeuse, singulièrement sa hiérarchie, doit établir un rapport de force équitable. Pour sa part, le médecin du travail qualifie la situation professionnelle décrite par l'intimée d'"extrêmement critique" et de préjudiciable pour la santé de l'intéressée. Il considère un retour de l'infirmière dans l'établissement litigieux comme "extrêmement risqué", une dégradation rapide de la situation lui paraissant alors "très élevée". A son avis, l'infirmière est à la limite de sa capacité de résistance et il s'étonne même qu'elle ait résisté aussi longtemps.
L'employeuse n'a pas tenu compte des observations et/ou suggestions du superviseur et du médecin du travail, lequel, malgré sa demande, n'a du reste pas été informé des mesures prises. En octobre 2013, la recourante a proposé qu'une collègue de l'infirmière occupe le poste à M._ jusqu'à Noël, avant le retour de l'intimée. Cette solution, provisoire, n'apparaissait toutefois pas apte à résoudre le problème de fond entre l'employée et la direction de l'établissement scolaire. A cette époque, l'intimée se sentait d'ailleurs piégée et découragée face aux changements de discours tous les quinze jours de son employeuse, comme elle l'a exprimé au superviseur.
Finalement, le 12 novembre 2013, la recourante a formulé trois propositions à l'intimée, soit un retour à M._ avec un accompagnement de sa supérieure, une médiation externe ou une mise en arrêt maladie. L'intimée a refusé cette dernière solution parce qu'elle était alors apte au travail. Elle a choisi de retourner à l'établissement de M._, tout en se réservant d'opter par la suite pour une médiation externe, qui lui avait été présentée comme soumise à de nombreuses conditions et délais. Vers la mi-novembre 2013, l'intimée a repris son poste à M._ et une réunion a eu lieu avec sa supérieure et le directeur, qui a présenté des excuses.
A ce moment-là, l'intimée n'avait guère d'autre choix que de retourner à M._. Or, cette option était clairement déconseillée par le médecin du travail et le superviseur. De plus, ce retour n'était pas assorti des mesures de clarification des charges respectives et de soutien préconisées par le superviseur. Certes, lors du retour de l'intimée, la supérieure directe a demandé une réunion avec le directeur, lequel a présenté des excuses. Mais rien n'indique que les secrétaires, avec lesquelles les tensions étaient vives, étaient impliquées dans cet épisode. Du reste, les excuses du directeur n'ont pas empêché que, quelques jours plus tard, le secrétariat adresse courriels et appels à l'intimée pendant son arrêt de travail lié à un accident.
C'est dans ce contexte, alors qu'elle se disait à bout de nerfs et était sous médication, que l'intimée a envoyé le courriel déjà cité du 28 novembre 2013. Par la suite, l'infirmière a connu des périodes d'incapacité de travail, totale ou partielle, avant de recevoir le congé-modification litigieux.
A l'exposé de ces événements, il apparaît que la recourante a certes réagi - même si tardivement - aux plaintes de l'intimée quant à la situation conflictuelle vécue à M._, mais que les mesures qu'elle a prises n'étaient ni suffisantes (le travail à distance provisoire, le recours à l'éthicien et au médecin du travail), ni adéquates (le retour dans l'établissement scolaire sans mise au point claire avec toutes les personnes impliquées et le soutien de la hiérarchie) pour remédier à une situation susceptible d'atteindre l'employée dans sa santé.
Dans ces conditions, il était abusif de la part de l'employeuse d'adresser un congé-modification comportant des conditions très défavorables pour l'intimée en le justifiant par un agissement véniel de celle-ci intervenu dans un contexte déjà tendu de longue date, alors qu'elle-même n'avait, auparavant, pas pris les mesures nécessaires pour renforcer la position de son employée face à l'établissement scolaire et protéger sa santé dans une situation conflictuelle. Il s'agit d'un cas où l'employeuse exploite la propre violation de ses obligations contractuelles de protection envers l'employée pour proposer à celle-ci une modification des conditions de travail très défavorable, soit une constellation typique d'un abus de droit. La modification proposée doit dès lors être considérée comme injustifiée et le congé notifié à la suite du refus de l'intimée est abusif, comme la cour cantonale l'a admis à bon droit.
4.
A titre subsidiaire, la recourante critique la quotité de l'indemnité pour congé abusif, fixée à quatre mois de salaire par la cour cantonale. Celle-ci aurait omis de prendre en compte des critères déterminants dans le cadre de l'<ref-law>, soit les problèmes relationnels du même ordre que l'intimée aurait déjà connus dans son poste précédent, les démarches entreprises en faveur de l'employée, ainsi que la faute de l'intimée qui aurait refusé les mesures proposées et envoyé par erreur un courriel d'insulte. D'après la recourante, l'indemnité ne devrait pas dépasser un mois de salaire.
4.1. Selon l'art. 336a al. 1 et 2 CO, la partie qui a résilié abusivement le contrat de travail doit à l'autre une indemnité à fixer par le juge et correspondant à six mois de salaire au plus. Le montant doit être évalué selon les règles du droit et de l'équité, conformément à l'<ref-law>. Il faut notamment prendre en considération la gravité de la faute commise par l'employeur, une éventuelle faute concomitante du travailleur, la gravité de l'atteinte à sa personnalité, son âge, la durée et l'intensité de la relation de travail, les effets du licenciement et les difficultés de réinsertion dans la vie économique (<ref-ruling> consid. 3; voir aussi ATF <ref-ruling> consid. 6a p. 255).
Le Tribunal fédéral ne contrôle qu'avec retenue une décision de dernière instance cantonale prise en équité. Il intervient lorsque le prononcé s'écarte sans raison des règles établies par la doctrine et la jurisprudence en matière de libre appréciation, ou lorsqu'il repose sur des faits qui, dans le cas particulier, ne devaient jouer aucun rôle, ou encore lorsqu'il méconnaît des éléments qui auraient absolument dû être pris en considération; en outre, le Tribunal fédéral redresse les décisions rendues en vertu d'un pouvoir d'appréciation lorsqu'elles aboutissent à un résultat manifestement injuste ou à une iniquité choquante (<ref-ruling> consid. 2.1.1 p. 305; <ref-ruling> consid. 4.1 p. 32; <ref-ruling> consid. 3.1 p. 220).
4.2. La cour cantonale a confirmé l'appréciation des premiers juges, lesquels ont notamment tenu compte de la durée des rapports de travail (sept ans) et de la gravité de l'atteinte à la santé subie par l'intimée. Elle a pris en considération en outre la faute de l'employeuse, d'une certaine importance, ainsi que les circonstances dans lesquelles le congé était intervenu, soit durant un arrêt maladie de l'intimée, après une tentative de lui faire accepter une modification du contrat largement défavorable et en la prenant par surprise lors d'une réunion à laquelle elle avait été invitée pour d'autres motifs. Elle a relevé enfin la capacité financière suffisante de la recourante pour faire face à ses obligations.
Les critères pris en compte sont pertinents et les éléments prétendument omis selon la recourante - dans la mesure où ils sont établis - ne permettent pas de conclure que la cour cantonale aurait abusé de son pouvoir d'appréciation en fixant à quatre mois de salaire l'indemnité pour congé abusif due à l'intimée.
Le grief tiré d'une violation de l'<ref-law> se révèle dès lors mal fondé.
5.
Sur le vu de ce qui précède, le recours doit être rejeté.
La recourante, qui succombe, prendra à sa charge les frais judiciaires (<ref-law>) - qui ne seront pas fixés selon le tarif réduit de l'art. 65 al. 4 let. c LTF dès lors que les conclusions de la demande étaient supérieures à 30'000 fr. - et versera des dépens à l'intimée (art. 68 al. 1 et 2 LTF).
La demande d'assistance judiciaire de l'intimée devient ainsi sans objet, étant précisé que la recourante sera manifestement en mesure de payer à son adverse partie les dépens auxquels celle-ci a droit.

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté.
2.
Les frais judiciaires, arrêtés à 2'000 fr., sont mis à la charge de la recourante.
3.
La recourante versera à l'intimée une indemnité de 2'500 fr. à titre de dépens.
4.
La demande d'assistance judiciaire de l'intimée est sans objet.
5.
Le présent arrêt est communiqué aux mandataires des parties et à la Cour d'appel civile du Tribunal cantonal du canton de Vaud.
Lausanne, le 20 mars 2019
Au nom de la Ire Cour de droit civil
du Tribunal fédéral suisse
La Présidente : Kiss
La Greffière : Godat Zimmermann